web-dev-qa-db-ja.com

なぜノードの使用はインポートする必要がないのですか?

私はnode.jsを学習していますが、Reactが使用するrequire構文ではなく、import構文を使用する理由を知りたいです。

つまり.

const Validator = require("validator");

VS

import Validator from "validator";

私はimportがes6であると信じていましたが、それがノードで使用されない理由を説明しているとは思いません。

8
Holly

importdefaultは新しいES6機能であり、まだノードでは使用されていません。 ノードは実際には既に新機能を実験として実装しています--experimental-modulesフラグを使用し、.mjs拡張子で保存されたファイルのみ。

babel のようなトランスパイラーにより、最新の仕様承認済みおよび/または実験的な ECMAScript を記述できるようになります。 Webpack のようなバンドルのエコシステムでは、babelのようなトランスパイラーを使用すると、保守可能な将来性のあるjavascriptを簡単に記述できますが、コードはcommonjs(形式認識できるby require(旧式のimport)とmodule.exports(旧式のexport)が表示されます。

5
axm__

インポートはes6だと思っていましたが、それがノードで使用されない理由を説明しているとは思いません。

NodeJSがライブラリ全体を実装するのと同じように、コールバックベースのアプローチのみをサポートする大量の非同期関数が実装されています。このように考えると、遅かれ早かれ、NodeJSフレームワークは確実にimport構文をサポートし、promiseベースをサポートするようにこれらすべての非同期関数をアップグレードします。

1
Nguyen You

おそらく歴史的な理由による。 node.jsとchrome(v8エンジン)はES6標準より古いです。

一方、次を参照してください ノードでes6インポートを使用するにはどうすればよいですか?

インポートも使用できます。

1
teroi