Javascript Transfile Async正在等待Babel.js的建议?
有人建议引入C风格的Javascript Transfile Async正在等待Babel.js的建议?,javascript,async-await,babeljs,ecmascript-next,Javascript,Async Await,Babeljs,Ecmascript Next,有人建议引入C风格的async wait。我知道Babel.js可以将ES6传输到ES5,但是有没有办法让它异步传输到ES5?Babel v6 从巴贝尔v6开始,巴贝尔不再包含任何变压器。你必须明确你想要转换 预设-非ES2015环境 实现这一点的最快方法是使用预设,这些预设已经包含了转换ES2015和更新方案所需的插件集。对于async,您将需要和预设以及插件(不要忘记安装babel runtime,如文档中所述): 预设-ES2015环境 如果您在支持ES2015(更具体地说,是生成器和承诺
async wait
。我知道Babel.js可以将ES6传输到ES5,但是有没有办法让它异步传输到ES5
?Babel v6
从巴贝尔v6开始,巴贝尔不再包含任何变压器。你必须明确你想要转换
预设-非ES2015环境
实现这一点的最快方法是使用预设,这些预设已经包含了转换ES2015和更新方案所需的插件集。对于async
,您将需要和预设以及插件(不要忘记安装babel runtime
,如文档中所述):
预设-ES2015环境
如果您在支持ES2015(更具体地说,是生成器和承诺)的环境中运行代码,那么您所需要的只是es2017预设:
{
"presets": [
"es2017"
]
}
习俗
要仅转换async
函数,您需要以下插件
在任何情况下都需要能够解析异步函数
为了运行异步函数,您需要使用
- :将
函数转换为生成器。这将使用巴贝尔自己的“共同例程”实现async
- :还将
函数转换为生成器,但将其传递给配置中指定的模块和方法,而不是Babel自己的方法。这允许您使用外部库,例如async
bluebird
Babel运行时
包)
示例:
与发电机异步
{
"plugins": [
"syntax-async-functions",
"transform-async-to-generator"
]
}
{
"plugins": [
"syntax-async-functions",
"transform-async-to-generator",
"transform-regenerator",
"transform-runtime"
]
}
异步到模块方法
{
"plugins": [
"syntax-async-functions",
["transform-async-to-module-method", {
"module": "bluebird",
"method": "coroutine"
}]
]
}
与发电机+再生器异步
{
"plugins": [
"syntax-async-functions",
"transform-async-to-generator"
]
}
{
"plugins": [
"syntax-async-functions",
"transform-async-to-generator",
"transform-regenerator",
"transform-runtime"
]
}
巴贝尔v4及以上 是的,您必须启用。巴贝尔使用 用法
$ babel --experimental
$ babel --stage 0
这个解决方案可能自(2月25日Felix Kling)以来发生了变化,或者使用async await的方法仍然不止一种 对我们有效的是这样管理巴贝尔
$ npm install babel-runtime
也许现在更为现代;只需将babel的内容放在一个单独的文件中:
'use strict';
require('babel/register'); // Imports babel - auto transpiles the other stuff
require('./app'); // this is es6 - gets transpiled
有关更多详细信息,请参阅我的代码。已批准的答案现在似乎已过时。实验旗帜已被弃用,取而代之的是舞台 用法
$ babel --experimental
$ babel --stage 0
第0阶段
- es7.classProperties
- es7.理解
- es7.1.1函数
- 装饰师
- es7.1扩展
- es7.1.1.1.2.1
- es7.1求幂运算符
npm安装babel-preset-stage-0
并像以前一样使用它,实现了这一点
var babel = require("babel-core");
var transpiled = babel.transform(code, { "presets": ["stage-0"] });
看
babel.transform(code,{stage:0}).code
,那么我会收到一个ReferenceError:[babel]未知:未知选项:base.stage
需要如何设置选项?嗯。当我设置上述选项时,似乎对我有效,但从你的答案来看,可能又发生了变化。