javascript - 如何在运行时评估 Javascript ES6 代码?

标签 javascript node.js ecmascript-6 babeljs transpiler

我想使用 Node.js 在运行时执行 ES6 代码。给定一串代码:

const es6code = 'const square = (b) => { return b * b; }';
es6Eval(es6code)(5)

es6Eval 函数会将 es6 转换为 es5 并在运行时评估代码。

我该怎么做?

最佳答案

首先,让我们解决这个问题:您必须信任该代码的来源。您询问如何从环境中的字符串运行任意代码。如果该代码是恶意的,则可能会发生不好的事情。因此,您必须信任代码的来源(例如,无论谁将其提供给您)。

假设您信任从您那里获取代码的任何人:

  1. 鉴于 const es6code 中的 const,您将在“ES6”(即 ES2015+)环境中运行此代码。所以...

    const f = new Function(es6code + "; return square;")();
    // Note ----------------------^^^^^^^^^^^^^^^^^^^^^ ^^
    // And --------------------------------------------/
    

    然后

    console.log(f(5)); // 25
    
  2. 如果您需要先转译它,请使用 Node API for Babel先改造一下代码:

    var code = require("babel-core").transform(es6code, options);
    

    ...然后对结果执行 #1。

关于javascript - 如何在运行时评估 Javascript ES6 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48862378/

相关文章:

node.js - 在 Windows 上安装 npm 后无法识别 node_modules

javascript - 将类型引用为索引时出现错误

javascript - 如何使用 express 服务器在 html 中加载 JS 文件

javascript - 将 2 个搜索表单合并为 1 个输入,以及复选框

javascript - 使 Dockerfile VOLUME 表现得像 docker-compose volumes

node.js - 为什么 Sequelize 将我的日期时间更改为 T00 :00:00Z?

node.js - Express:保持所有 DRY 创建 mongoose 连接模块(使用新的 createConnection 方法)

javascript - 如果与 es6 箭头函数一起使用,React.createClass 中的词法范围为 'this'

javascript - 具有箭头函数语法的 Getter

javascript - 使用 htmlparser2 将 html 字符串解析为 json