私はnode.jsを学習していますが、Reactが使用するrequire
構文ではなく、import
構文を使用する理由を知りたいです。
つまり.
const Validator = require("validator");
VS
import Validator from "validator";
私はimport
がes6であると信じていましたが、それがノードで使用されない理由を説明しているとは思いません。
import
とdefault
は新しいES6機能であり、まだノードでは使用されていません。 ノードは実際には既に新機能を実験として実装しています :--experimental-modules
フラグを使用し、.mjs
拡張子で保存されたファイルのみ。
babel のようなトランスパイラーにより、最新の仕様承認済みおよび/または実験的な ECMAScript を記述できるようになります。 Webpack のようなバンドルのエコシステムでは、babelのようなトランスパイラーを使用すると、保守可能な将来性のあるjavascriptを簡単に記述できますが、コードはcommonjs
(形式認識できるby require
(旧式のimport
)とmodule.exports
(旧式のexport
)が表示されます。
インポートはes6だと思っていましたが、それがノードで使用されない理由を説明しているとは思いません。
NodeJSがライブラリ全体を実装するのと同じように、コールバックベースのアプローチのみをサポートする大量の非同期関数が実装されています。このように考えると、遅かれ早かれ、NodeJSフレームワークは確実にimport
構文をサポートし、promiseベースをサポートするようにこれらすべての非同期関数をアップグレードします。
おそらく歴史的な理由による。 node.jsとchrome(v8エンジン)はES6標準より古いです。
一方、次を参照してください ノードでes6インポートを使用するにはどうすればよいですか?
インポートも使用できます。