nodejs 8导入模块 - 需要还是导入?

lau*_*kok 36 import babel node.js

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

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

我一直在挖掘,但似乎没有答案.如果我们仍然需要使用require,为什么节点不能实现import呢?

kuz*_*zyn 38

UPDATE-2018.11.15↓

简短的回答
我们还在使用require

长期回答
ESM加载已部分登陆于8.5.02017年9月发布的节点.因此,它有一部分规范作为实验性功能暂时:请参阅此处的API文档.注意事项包括对--experimental-modules标志的需求以及.mjs模块的新扩展的使用.

在ESM加载稳定且功能齐全之前,仍然需要在V8中进行更改,因此我的原始答案仍然存在,require如果您还没有将Babel用于其他内容,我仍会建议坚持使用CommonJS

请参阅此帖子以获得更多教学解释


以前的答案↓

这两种实现方式在引擎盖下是完全不同的,因此除了眼睛之外还有更多

需要注意的是,仍然存在关于规范(一直到V8)的问题/问题,因此import如果没有使用转换器,目前无法在Node中实现

查看其中一位撰稿人的评论(2017年2月):

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

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

有关实现方式有何不同的更多详细信息,请参阅此文章