我正在学习node.js,想知道为什么它使用require
语法而不是React使用的import
语法。
例如:
const Validator = require("validator");
与
import Validator from "validator";
我认为import
是es6语法,但我不认为这解释了为什么在node中没有被使用。
我正在学习node.js,想知道为什么它使用require
语法而不是React使用的import
语法。
例如:
const Validator = require("validator");
与
import Validator from "validator";
我认为import
是es6语法,但我不认为这解释了为什么在node中没有被使用。
import
和default
是较新的ES6特性,Node尚未使用。但Node已经作为实验实现了这些新特性:只需使用--experimental-modules
标志并仅适用于保存有.mjs
扩展名的文件。
像babel这样的转换器使得编写现代、规范批准和/或实验性ECMAScript成为可能。在像Webpack这样的打包工具生态系统中,借助babel这样的转换器,编写易于维护、具有未来性的JavaScript变得容易,同时代码仍然受到广泛支持,因为它被转换为commonjs
(可以通过require
(旧式的import
)和module.exports
(旧式的export
)进行识别)。
import
系统实现未经过规范批准。具体而言,规范要求导入模块的文件名与您传递给import
语句的字符串匹配。.mjs
类型的整个问题是由于无法使ES6模块系统与Commonjs(node的模块系统)兼容所致。 - slebetman我认为import是ES6的一部分,但我不认为这解释了为什么它在Node中没有被使用。
就像NodeJS实现他们整个库的方式,其中有大量支持基于回调的异步函数。这样想,你会意识到,早晚,NodeJS框架肯定会支持import
语法,并升级所有这些异步函数以支持基于Promise的方法。