Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法将包含es6的字符串转换为es5?_Javascript_Babeljs - Fatal编程技术网

Javascript 有没有办法将包含es6的字符串转换为es5?

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,正如您在问题中提到的,有一个工具名为 从: 转换(代码,[选项]) 转

我正在创建一个应用程序,其中用户将输入es6代码,我的应用程序将返回es5等效代码。我知道babel将es6转换为es5,但有没有办法将其用于包含es6代码的字符串

e、 g 输入:

输出:

"[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()”var code=“hai()”