UPDATE-2018.11.15↓
简短答案
我们仍在使用
require
长答案
ESM加载已部分降落在
8.5.02017年9月发布的node
上。正因为如此,它已经成为规范的一部分,并且已经作为实验功能存在了一段时间:请参阅此处的API文档。注意事项包括需要
--experimental-modules标志和使用
.mjs模块的新扩展。
在ESM加载稳定且功能完善之前,V8中仍需要进行一些更改,因此,按照我的原始答案,require
如果您尚未使用Babel进行其他工作,我仍然建议您坚持使用CommonJS。
看到这篇文章更多的教学解释
上一个答案↓
这两种实现在幕后完全不同,因此它所具有的不仅仅是眼前一亮的
得出的结论是,有关规范的问题/问题仍然存在(一直到V8),因此
import如果不使用编译器,当前无法在Node中实现。
请参阅以下贡献者的评论(日期为2017年2月):
在当前时间点上,在Node.js甚至开始研究可支持的ES6模块实现之前,ES6和虚拟机方面仍需要解决许多规范和实现问题。工作正在进行中,但将需要一些时间-
我们目前至少需要一年左右的时间。
请记住,编译器只是将ES6模块语法转换为CommonJS模块语法,因此目前没有性能优势。换句话说,如果您还没有Babel管道,那么
import除了主动语法的观点之外,没有太多的动机来创建仅使用新提议的语法的管道。
有关实现方式差异的更多详细信息,请参见本文



