ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js でのネイティブ ES モジュールの使用の紹介

Node.js でのネイティブ ES モジュールの使用の紹介

巴扎黑
巴扎黑オリジナル
2017-09-20 09:30:581466ブラウズ

この記事では、Node.js でのネイティブ ES モジュールのメソッド分析の使用方法を主に紹介し、必要な友達は参考にしてみましょう。

バージョン 8.5.0 以降、Node.js はネイティブ ES モジュールをサポートし、コマンド ライン オプションを通じて有効にすることができます。新機能は主に Bradley Farias によるものです。

1. デモ

この例のコード ディレクトリ構造は次のとおりです。

えー

実行してくださいデモ:

esm-demo/
 lib.mjs
 main.mjs


2. チェックリスト: 注意事項

ES モジュール:

·

モジュールを動的にインポートすることはできません。ただし、動的 ​​import() の作業は進行中であり、すぐにサポートが利用可能になる予定です。

·__dirname や __filename などのメタ変数はありません。ただし、同様の関数「import.meta」が提案されています。次のようになります:


export function add(x, y) {
 return x + y;
}

·現在、すべてのモジュール識別子は URL です (この部分は Node.js の新機能です):

·File - ファイル拡張子付きの相対パス: ../util /tools.mjs


library - ファイル拡張子もパスもありません lodash


npm ライブラリを (bundler を使用せずに) ブラウザーでも利用できるようにする方法を改善する方法はまだわかりません。 1 つの可能性は、パスを実際のパスにマップする RequireJS スタイルの構成データを導入することです。現在、ブラウザでベア パス モジュール識別子を使用することは違法です。


CJS モジュールとの相互運用性

CJS モジュールをインポートできますが、常にデフォルトのエクスポート (module.exports の値) のみが存在します。 CJS モジュールで名前付きエクスポートをサポートすることはすでに取り組んでいますが、しばらく時間がかかる可能性があります。あなたが助けることができるなら、あなたはそれをすることができます。

import {add} from './lib.mjs';
console.log('Result: '+add(2, 3));

·

ESモジュールではrequire()を使用できません。主な理由は次のとおりです:


·

パス解決の動作が若干異なります: ESM は NODE_PATH と require.extensions をサポートしません。また、その識別子が常に URL であるという事実により、いくつかのわずかな違いが生じます。


·

ES モジュールは常に非同期でロードされるため、Web との互換性が最大限に確保されます。この読み込みスタイルを、require() による CJS モジュールの同期読み込みと混合することはできません。


·

同期モジュールの読み込みを無効にすると、ES モジュールのトップレベル待機インポート用のフォールバック パスも残ります (現在検討中の機能)。


3. 以前のバージョンの Node.js での ES モジュール

8.5.0 より前の Node.js バージョンで ES モジュールを使用したい場合は、John-David Dalton による @std/esm を参照してください。

ヒント: ロック解除可能な追加機能を有効にしない場合、Node.js はネイティブ ES モジュールと 100% の互換性を保ちます。

よくある質問


コマンド ライン オプションなしで ES モジュールを使用できるのはいつですか?


現在の計画は、ES モジュールを Node.js 10 LTS でデフォルトで利用できるようにすることです。

さらなる読書

Node.js およびブラウザーの ES モジュールの詳細については、次を参照してください:
·

「トランスパイルされた ES モジュールの仕様準拠の強化」 [ES モジュールをネイティブに使用するか、Babel 経由でトランスパイルするか]


· 「モジュール指定子: ES モジュールの新機能?」 [なぜ .mjs なのか? モジュール指定子はどのように解決されるのですか? など]

·

「モジュール」[ES モジュールの詳細な章] 「ES6 の探索」]

今後の ECMAScript 提案:

· ブログ: 「ES 提案: import() – ES モジュールを動的にインポートする」

· 提案: "import.meta"

以上がNode.js でのネイティブ ES モジュールの使用の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。