Node.js 为什么节点使用不需要导入?

Node.js 为什么节点使用不需要导入?,node.js,ecmascript-6,javascript-import,Node.js,Ecmascript 6,Javascript Import,我正在学习node.js,我想知道为什么它使用require语法而不是React使用的import语法 i、 e const Validator=require(“验证器”) VS 从“验证器”导入验证器 我相信import是es6,但我认为这并不能解释为什么它没有在node中使用。可能是因为历史原因。node.js和chrome(v8引擎)比ES6标准旧 另一方面,请参见: 您也可以使用导入。导入和默认是较新的ES6功能,节点尚未使用。:使用--实验模块标志,并且仅适用于使用.mjs扩展名保

我正在学习node.js,我想知道为什么它使用
require
语法而不是React使用的
import
语法

i、 e

const Validator=require(“验证器”)

VS

从“验证器”导入验证器


我相信
import
是es6,但我认为这并不能解释为什么它没有在node中使用。

可能是因为历史原因。node.js和chrome(v8引擎)比ES6标准旧

另一方面,请参见:


您也可以使用导入。

导入
和默认
是较新的ES6功能,节点尚未使用。:使用
--实验模块
标志,并且仅适用于使用
.mjs
扩展名保存的文件

像Transpiler这样的Transpiler可以编写现代的、经过规范批准的和/或实验性的文件。在像babel这样的Transpiler这样的捆绑包生态系统中,编写可维护、经得起未来考验的javascript变得很容易,而代码仍然受到广泛支持,因为它被转换为
commonjs
(您可以通过
require
(老式的
导入
)和
模块导出
(老式的
导出

我相信import是es6,但我不认为这可以解释为什么它不是es6 在节点中使用


就像NodeJS实现其整个库的方式一样,它包含大量只支持基于回调方法的异步函数。这样想,你会意识到,NodeJS框架迟早会支持
import
语法,并升级所有这些异步函数以支持基于承诺的方法.

“我认为这并不能解释为什么它不在node中使用”-当然是这样的:Node.js如果比es6早得多,看看它的历史吧-讨论时间大约在2010年,比es6早五年,因为我经常看到Node中使用的箭头函数和其他es6功能,我认为导入也会一样,它在chrome&V8中也可用。但我明白为什么在中共享的@axm_uuuuu不支持它他的回答指出,Bable和Typescript对
导入
系统的实现未经规范批准。具体而言,规范要求导入模块的文件名与传递给
导入
语句的字符串匹配。
.mjs
类型的全部原因是无法使ES6模块同步使用Commonjs(节点的模块系统)进行stem工作