Javascript 有没有办法将包含es6的字符串转换为es5?
我正在创建一个应用程序,其中用户将输入es6代码,我的应用程序将返回es5等效代码。我知道babel将es6转换为es5,但有没有办法将其用于包含es6代码的字符串 e、 g 输入: 输出:Javascript 有没有办法将包含es6的字符串转换为es5?,javascript,babeljs,Javascript,Babeljs,我正在创建一个应用程序,其中用户将输入es6代码,我的应用程序将返回es5等效代码。我知道babel将es6转换为es5,但有没有办法将其用于包含es6代码的字符串 e、 g 输入: 输出: "[1, 2, 3].map(function(n) { return n * 2; }, this)" 这被称为“传输”。Transpilers是在同一抽象级别将一种语言编写的代码传输到另一种语言的程序。(来自) 对于ES6到ES5,正如您在问题中提到的,有一个工具名为 从: 转换(代码,[选项]) 转
"[1, 2, 3].map(function(n) { return n * 2; }, this)"
这被称为“传输”。Transpilers是在同一抽象级别将一种语言编写的代码传输到另一种语言的程序。(来自)
对于ES6到ES5,正如您在问题中提到的,有一个工具名为
从:
转换(代码,[选项])
转换传入的代码。返回包含生成的代码、源映射和AST的对象
babel.transform(code, [options]) // => { code, map, ast }
示例
var result = babel.transform("code();", options);
result.code;
result.map;
result.ast;
这被称为“传输”。Transpilers是在同一抽象级别将一种语言编写的代码传输到另一种语言的程序。(来自)
对于ES6到ES5,正如您在问题中提到的,有一个工具名为
从:
转换(代码,[选项])
转换传入的代码。返回包含生成的代码、源映射和AST的对象
babel.transform(code, [options]) // => { code, map, ast }
示例
var result = babel.transform("code();", options);
result.code;
result.map;
result.ast;
您需要同时安装babel core和babel-preset-2015 之后 如果您进入节点
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});'
结果,。很明显,这增加了新行和“use strict”,这可能是您不想要的,因此您需要仔细阅读babel options文档,看看它是否可以完全按照您的需要进行格式化,或者自己进行格式化
编辑
巴别塔预设的工作方式现已改变(请参见和)。修改的步骤包括:
npm install babel-core babel-preset-env -S
然后运行node并输入
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});'
与之前一样。您需要同时安装babel core和babel-preset-2015 之后 如果您进入节点
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});'
结果,。很明显,这增加了新行和“use strict”,这可能是您不想要的,因此您需要仔细阅读babel options文档,看看它是否可以完全按照您的需要进行格式化,或者自己进行格式化
编辑
巴别塔预设的工作方式现已改变(请参见和)。修改的步骤包括:
npm install babel-core babel-preset-env -S
然后运行node并输入
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});'
和以前一样。babel.js会很有帮助。您可以使用他们的API。它将允许您传递一个字符串,作为回报,它将为您提供ES5/ES6中的代码。我不理解您的“where the code is a string”区别。不是所有的Javascript代码本质上都是字符串吗?@RobertHarvey OP可能将代码作为字符串<代码>var code=“hai()”我猜他想把它转换成ES6/ES5。Babel JS在他们的网站上有一个“试用”页面,它的功能与您尝试实现的完全相同。所以是的,很明显这是可能的。babel.js会很有帮助。你可以使用他们的API。它将允许您传递一个字符串,作为回报,它将为您提供ES5/ES6中的代码。我不理解您的“where the code is a string”区别。不是所有的Javascript代码本质上都是字符串吗?@RobertHarvey OP可能将代码作为字符串<代码>var code=“hai()”我猜他想把它转换成ES6/ES5。Babel JS在他们的网站上有一个“试用”页面,它的功能与您尝试实现的完全相同。所以是的,很明显这是可能的!404未找到:巴别塔预设-2015@latest?现在似乎已弃用(请参阅)。我会更新的answer@bluejayke我已经编辑了答案以使其更新。npm ERR!404未找到:巴别塔预设-2015@latest?现在似乎已弃用(请参阅)。我会更新的answer@bluejayke我对答案进行了编辑,使之更新。你能提供什么确切的选项来放置印加吗?你能提供什么确切的选项来放置印加吗