【问题标题】:How to use ES6 features when writing server-side JavaScript without Babel?在没有 Babel 的情况下编写服务器端 JavaScript 时如何使用 ES6 特性?
【发布时间】:2020-01-03 21:13:38
【问题描述】:

现在有aremanyarticles 声称在利用 ES6 的功能开发 Node 应用程序时不再需要 Babel。 由于我打算使用 Node 编写一个终端应用程序,所以我有一些实际问题。

  1. 在 JS 社区中是否有一些共识,这是最低要求的 Node 版本? 如果是这样,这个版本是支持所有的 ES6 标准还是只支持其中的一部分? 编辑:更准确地说——是否有一个版本 X 对 ES6 的支持足够好,以至于导致大多数开发人员忽略了 Babel?
  2. 是否有机会保护您的应用程序不被旧版本的 Node 执行(或者更确切地说无法执行)? 编辑:更准确地说——我计划编写一个终端应用程序,所以我无法控制人们将在他们的机器上安装的 Node 版本(他们将尝试在其上运行我的应用程序)。
  3. 是否有一个很棒的基于 Node 和 ES6 的终端应用程序可供我学习以获取最佳实践?有什么建议吗?

【问题讨论】:

  • "JS 社区是否有一些共识,这是最低要求的 Node 版本?" 为什么 JS 社区必须达成共识?该引擎要么支持 ES6,要么不支持 - 您可以查看一些规范。
  • "是否有机会保护您的应用不被旧版本的 Node 执行(或者更确切地说无法执行)?" 只需将要求写为“有在版本 X 或更高版本上运行”。如果有人用早期的运行它 - 他们会得到错误。或者只是进行一个小检查,并尽早以某种“不支持的版本错误”进行轰炸。
  • 如果你使用 any 支持的 Node.js 版本,则不需要 Babel。 (你可能会错过旧版本中的一些后 ES6 特性,但它们不值得为它们引入 Babel。再说一次,我一直认为 Babel 是这样的,所以也许其他人不同意。)因为没有人应该使用不受支持的 Node 版本,您可以针对 Node 10(Node 8 刚刚达到 EOL)并合理地跳过版本检查。
  • 是否有一个基于 Node 和 ES6 的酷炫终端应用程序可供我学习以获取最佳实践?有什么建议吗?”要求场外推荐是题外话所以,我想你已经知道了。说起来,多个问题也是题外话。
  • 查看node.green。 v10.18 是之前的 LTS 版本,支持所有 ES6 功能(尾调用优化和模块除外)。

标签: javascript node.js ecmascript-6 babeljs


【解决方案1】:

12.14.0 对 ES6 模块的支持不够好,我建议在没有转译器的情况下使用它们。

我了解 13.5.0 将允许您使用没有实验标志的原生 ES6 模块,但它不是一个稳定的 LTS 版本。

14.0.0 是我尝试使用没有转译器的原生 ES6 模块的第一个版本。但是,它尚未发布。我喜欢Deno 在没有 NPM 的情况下提供原生 ES6 支持的方式,但它仍然是一个测试版软件。

【讨论】:

    【解决方案2】:

    来自https://nodejs.org/en/docs/es6/ Node.js 是针对现代版本的 V8 构建的。通过及时了解该引擎的最新版本,我们确保及时将 JavaScript ECMA-262 规范中的新功能提供给 Node.js 开发人员,并持续改进性能和稳定性。

    查看以下内容以查看所有完全受支持的功能 https://node.green/

    【讨论】:

      【解决方案3】:

      首先,我真的建议使用最新的可用 LTS 版本的 Node.js,目前是 12.14.0

      但是,如果出于某种原因您打算使用旧版本,您可以查看 ES6 支持here

      无论如何,如果你想使用一些后 ES6 特性,你真的应该使用babel

      【讨论】:

        猜你喜欢
        • 2012-05-06
        • 2018-08-21
        • 1970-01-01
        • 2021-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-03
        • 1970-01-01
        相关资源
        最近更新 更多