我正在创建一个应用程序,用户将输入es6代码,我的应用程序将返回等效的es5。我知道babel将es6转换为es5,但是否有任何方法将其用于包含es6代码的字符串。
例如输入:
"[1, 2, 3].map(n => n * 2)"输出:
"[1, 2, 3].map(function(n) { return n * 2; }, this)"发布于 2016-04-22 05:55:42
这就是所谓的“转移”。Transpilers是将用一种语言编写的代码转移到同一抽象级别的另一种语言的程序。(来自维基百科)
对于ES6 to ES5,正如您在问题中提到的,有一个名为巴贝尔的工具。
来自巴贝尔文件
var babel =需要量(“babel-core”); Babel.transform(代码,选项) 转换传入的代码。使用生成的代码、源映射和AST返回对象。 Babel.transform(代码,选项) // => { code,map,ast } 示例 变量结果= babel.transform("code();",选项);result.code;result.map;result.ast;
发布于 2016-04-22 07:00:07
您需要同时安装babel-core和babel-预设-2015。
之后
var babel = require('babel-core');如果进入节点
babel.transform("[1, 2, 3].map(n => n * 2)", {presets: ["es2015"]}).code你会得到
'"use strict";\n\n[1, 2, 3].map(function (n) {\n return n * 2;\n});'结果。显然,这有新的行和“使用严格”添加,您可能不想,所以您将需要深入研究babel选项文档,看看它是否可以按照您想要的格式,或者自己做。
编辑
babel预置的工作方式现在已经改变了(参见关于预置-2015年度npm的通知和关于如何使用预置-env的信息)。修改后的步骤如下:
npm install babel-core babel-preset-env -S然后运行节点并输入
babel.transform("[1, 2, 3].map(n => n * 2)", {presets: ["env"]}).code你会得到
'"use strict";\n\n[1, 2, 3].map(function (n) {\n return n * 2;\n});'和以前一样。
https://stackoverflow.com/questions/36785041
复制相似问题