Nodejs 在 node 上使用 async await 应该编译成 es5 还是 es6?或者是别的方案?
Nodejs 在 node 上使用 async await 应该编译成 es5 还是 es6?或者是别的方案?
最近准备用 nodejs 做服务器才真正开始接触 node.js ,以前只是用用各种工具。
想知道大家在项目中使用的时候是怎么做的。
我正在使用 typescript , 2.0 目前只支持将 async 函数编译到 es6 ,因为它的实现需要依赖 generator 、 yield 这些 es6 特性, ts 目前也只能把这些语法编译到 es6 。
即将发布的 typescrit2.1 将能够把 async await yield generator 这些编译到 es5 ,但这样在本身已经支持了 generator 的 node 版本上跑是不是性能会差些。
看你运行环境的 node 版本了
你用 node6 不就行了
v4 版本的 async/await 编译过来性能不好,后面就没用了, v6 就不知道了
我只知道 babel 是可以配置的
node 7 这个月底能发布就好了吧
额,对了,其实我应该问的问题是大家都用什么版本的 node 做服务器,现在主流的是什么版本?有兼容性问题么?
http://node.green
可以看看这个
嗯, babel 应该是可以的,只要配置需要的 plugins 就行了
没历史包袱就上 node v6 吧,当前 LTS 版本.
node 还比较年轻,社区追新的风气比较严重…
现在的 LTS 的生命周短了点,估计过几年能好点吧
https://github.com/nodejs/LTS
node7 就支持原生 async 了,不过玩玩就行,单数版本不会成为 LTS ,寿命太短了.
嗯,不错的建议,已打算用 v6 。
node 7 已经发布了啊…
node --harmony_async_await app.js
在 Node.js 中使用 async/await
语法时,编译目标的选择主要取决于你的 Node.js 版本以及项目的兼容性需求。async/await
是 ES2017 (ES8) 的特性,因此在支持该特性的 Node.js 版本中,你可以直接使用它而无需编译。
Node.js 版本支持
Node.js 从版本 7.6 开始提供了对 async/await
的实验性支持,并在版本 8.0 中正式稳定支持。如果你的 Node.js 版本是 8.0 或更高,你可以直接使用 async/await
,无需将其编译为 ES5 或 ES6。
示例代码
// 使用 async/await 的示例
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchData();
编译需求
如果你的项目需要在旧版 Node.js 或浏览器环境中运行,你可能需要使用 Babel 等工具将代码编译为 ES5。不过,对于现代 Node.js 项目,尤其是使用最新 LTS 版本的 Node.js,通常不需要这样做。
结论
如果你的 Node.js 版本是 8.0 或更高,建议直接使用 async/await
,享受其带来的简洁和可读性。如果你的项目有特殊的兼容性需求,考虑使用 Babel 等工具进行代码转换。在配置 Babel 时,可以根据目标环境选择合适的预设(presets),如 @babel/preset-env
。