14

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

IE

const Validator = require("validator");

VS

import Validator from "validator";

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

4

3 回答 3

7

和 是较新的ES6 特性importdefault节点尚未使用。Node 实际上已经在实验中实现了新功能:使用--experimental-modules标志并且仅适用于使用.mjs扩展名保存的文件。

babel这样的编译器可以编写现代的、经过规范的和/或实验性的ECMAScript。在像Webpackcommonjs这样的捆绑requireimport和像 babel 这样的编译器的生态系统中,编写可维护、面向未来的 javascript 变得很容易,而代码仍然受到广泛支持,因为它被转换module.exports为老派export)。

于 2018-09-29T10:41:21.437 回答
1

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

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

于 2018-09-29T11:05:43.543 回答
1

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

另一方面,请参阅: 如何在节点中使用 es6 导入?

您也可以使用导入。

于 2018-09-29T10:39:05.043 回答