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

why node uses require not import?

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

const Validator = require("validator");

VS

import Validator from "validator";

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

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

另一方面,参见:

你也可以使用 import。

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

babel make it possible to write modern, spec approved and /or experimental ECMAScript. In an ecosystem of bundlers like Webpack 这样的转译器和像 babel 这样的转译器,编写可维护的、面向未来的代码变得容易 javascript,同时代码仍然得到广泛支持,因为它被转换为 commonjs(您看到的格式可被require(老派import)和module.exports(老派export)识别。

I believed import is es6 but I don't think that explains why it's not used in node.

就像 NodeJS 实现其整个库的方式一样,其中包含大量仅支持基于回调的方法的异步函数。这样一想,你就会发现,NodeJS 框架迟早会支持 import 语法,并将所有这些异步函数升级为支持 promise-based。