Node.js 为什么节点使用不需要导入?
我正在学习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扩展名保
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工作