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

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

还是我们还需要使用import babel?

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

UPDATE-2017.11.01↓

ESM负载部分降落在9月份发布的节点8.5.0中。 请参阅此处的API文档。 注意事项包括需要使用--experimental-modules标志和为模块使用新的.mjs扩展。 你可以看看这里的完整讨论

在ESM加载稳定和function齐全之前,我仍然需要在V8中发生变化,因为我原来的回答是,如果你还没有使用Babel作为其他的东西,我仍然会build议坚持使用CommonJS。 看到这个post更多的教学解释


以前的回答↓

这两种实现在引擎盖下是完全不同的,所以它比眼前的还要多

结果是,在规范(到V8的所有方面)上仍然存在问题/问题,并且因为这样的import当前不能在没有使用转发器的节点中实现

看到这个评论(2017年2月)来自贡献者之一 :

在目前的时间点上,在Node.js甚至可以开始支持ES6模块的实现之前,还需要在ES6和虚拟机方面发生一些规范和实现问题。 工作正在进行中,但需要一些时间 – 目前我们至less在一年左右。

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

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