【问题标题】:nodejs 8 import module - require or import? [duplicate]nodejs 8导入模块-需要还是导入? [复制]
【发布时间】:2017-12-12 15:29:24
【问题描述】:

只是想知道我们如何在 node.js 8 中导入模块 - 我们还在使用 require 吗?

或者我们还需要 babel 来使用import吗?

我一直在挖掘,但似乎没有答案。如果还得用require,为什么node还不能实现import呢?

【问题讨论】:

    标签: node.js import babeljs


    【解决方案1】:

    更新-2018.11.15 ↓

    简答
    我们仍在使用require

    长答案
    ESM 加载已部分登陆节点 8.5.0,该节点于 2017 年 9 月发布。因此,它已成为规范的一部分,作为实验性功能有一段时间:请参阅 API 文档 here。注意事项包括需要 --experimental-modules 标志以及为模块使用新的 .mjs 扩展。

    在 ESM 加载稳定且功能齐全之前,V8 中仍需要进行一些更改,因此与我最初的答案一样,如果您还没有使用 Babel,我仍然建议您坚持使用 CommonJS require其他东西

    请参阅此post 了解更多说明


    上一个答案↓

    这两种实现方式在本质上是完全不同的,所以它的作用远不止眼前所见

    要点是规范(一直到 V8)仍然存在挥之不去的问题/疑问,因此 import 目前无法在不使用转译器的情况下在 Node 中实现

    查看来自contributor 之一的此评论(日期为 2017 年 2 月):

    在当前时间点,在 Node.js 甚至可以开始构建可支持的 ES6 模块实现之前,ES6 和虚拟机方面仍有许多规范和实现问题需要解决。工作正在进行中,但需要一些时间 — 我们目前正在考虑至少一年左右。

    请记住,转译器只是将 ES6 模块语法转换为 CommonJS 模块语法,因此目前没有性能优势。换句话说,如果你还没有 Babel 管道,那么创建一个只是为了使用新提议的 import 语法的动机并不多,除非从积极的语法角度来看

    如需详细了解实现的不同之处,请see this write up

    【讨论】:

      猜你喜欢
      • 2022-09-30
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多