我尝试使用facebook的Regenerator将ES6代码转换为ES5代码。 我需要转换的代码是由React-ace编辑器生成的,它是一个字符串。 Regenerator无法识别字符串,只是按原样返回它们。
我尝试使用eval()和新的Function(),这两个都将在传递给regenerator.compile(“我需要编译的代码”)时执行。代码,返回的值只是返回值已执行的代码。
有没有办法转换React-ace(或任何浏览器文本编辑器)生成的字符串并将其转换为ES5代码?是否有其他库允许您将ES6语法转换为ES5?
带有本地函数声明的工作示例:
let testFunction = (b) => {
let a = (c) => {
return c
}
return b;
}
let regenCode = require('regenerator').compile(testFunction).code;
console.log(regenCode);
这会产生:
function testFunction(b) {
var a = function (c) {
return c;
}
return b;
}
尝试做:
let regenCode = require('regenerator').compile("let testFunction = (b) => { let a = (c) => { return c } return b; }");
但这只会让字符串回复给我
答案 0 :(得分:0)
您只能使用AST以编程方式使用Regenerator,而不能使用字符串。
AST转换:
var recast = require("recast"); var ast = recast.parse(es6Source); ast = require("regenerator").transform(ast); var es5Source = recast.print(ast);
在您的情况下,您必须执行以下操作:
var recast = require("recast");
var ast = recast.parse("let testFunction = (b) => { let a = (c) => { return c }; return b; }");
ast = require("regenerator").transform(ast);
var es5Source = recast.print(ast);