nodejs 8导入模块-需要还是导入? [复制]

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于nodejs 8导入模块-需要还是导入? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

nodejs调用函数和模块

NodeJS中模块成员的导入与导出

Nodejs - 除非使用完整路径,否则无法导入模块

Nodejs的模块化

Nodejs的模块化

8.什么是模块,模块的导入,__name__