我想使用 Node.js 在运行时执行 ES6 代码。给定一串代码:
const es6code = 'const square = (b) => { return b * b; }';
es6Eval(es6code)(5)
es6Eval
函数会将 es6 转换为 es5 并在运行时评估代码。
我该怎么做?
最佳答案
首先,让我们解决这个问题:您必须信任该代码的来源。您询问如何从环境中的字符串运行任意代码。如果该代码是恶意的,则可能会发生不好的事情。因此,您必须信任代码的来源(例如,无论谁将其提供给您)。
假设您信任从您那里获取代码的任何人:
鉴于
const es6code
中的const
,您将在“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。
关于javascript - 如何在运行时评估 Javascript ES6 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48862378/