我想在运行时使用Node.js执行ES6代码。给出一串代码:
const es6code = 'const square = (b) => { return b * b; }';
es6Eval(es6code)(5)
es6Eval
函数会将es6转换为es5并在运行时评估代码。
我该怎么做?
答案 0 :(得分:4)
首先,让我们解决这个问题:你必须信任该代码的来源。您正在询问如何从环境中的字符串运行任意代码。如果该代码是恶意的,那么可能会发生坏事。因此,您必须信任代码的来源(例如,无论是谁给了您)。
假设您信任以下任何人从中获取代码:
鉴于const
中的const es6code
,您在“ES6”(也就是说,ES2015 +)环境中运行此代码。所以......
const f = new Function(es6code + "; return square;")();
// Note ----------------------^^^^^^^^^^^^^^^^^^^^^ ^^
// And --------------------------------------------/
然后
console.log(f(5)); // 25
如果您需要先进行转换,请先使用Node API for Babel转换代码:
var code = require("babel-core").transform(es6code, options);
...然后在结果上做#1。