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

时间:2018-09-29 10:36:01

标签: node.js ecmascript-6 javascript-import

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

const Validator = require("validator");

VS

import Validator from "validator";

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

3 个答案:

答案 0 :(得分:2)

importdefault是ES6的新功能,尚未被节点使用。 Node is actually already implementing the new features as experiment though:带有--experimental-modules标志,仅适用于扩展名为.mjs的文件。

babel这样的编译器使编写现代的,经过规范认可和/或实验性的ECMAScript成为可能。在像Webpack这样的捆绑软件和像babel这样的编译器的生态系统中,编写易于维护的,面向未来的javascript变得很容易,而由于将代码转换为commonjs(这种格式您可以识别为require(旧式import)和module.exports(旧式export)。

答案 1 :(得分:1)

可能出于历史原因。 node.js和chrome(v8引擎)的版本早于ES6标准。

另一方面,请参阅: How can I use an es6 import in node?

您也可以使用导入。

答案 2 :(得分:1)

  

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

就像NodeJS实现其整个库的方式一样,大量的异步函数仅支持基于回调的方法。通过这种方式思考,您将意识到,迟早,NodeJS框架肯定会支持import语法,并将所有这些异步功能升级为支持基于Promise的。