ECMAScript 6モジュール概要

2374 ワード

どのプラットフォームの中の重要な特性は、コードライブラリをサポートする必要がある以外は、モジュールです.今までJavascriptは原生のモジュール化をサポートしていません.その結果、様々な解決策は、モジュールをクラスに追加します.たとえば、CommunJS modules(一部はnode.jsによって実現されます.)とrequire.js.しかし、次の世代のJavascript(公式にはECMAScript 6と呼ばれています)として、モジュールはついに重要な構成部分として加入されました.Axel RauschmayerはECMAScript 6モジュールを紹介する文章を書きました.それらは何であり、どのように使うかを解析しました.そして、今使いたいなら、採用する方法(変換コンパイラを使用します.).AxelはES 6モジュールの設計目標を以下のように指摘しました.ECMAScript 6(ES 6)モジュールの目標はCJS(CommonJS仕様)とAMD(Aynchrous Module Definition、非同期モジュール定義)のユーザーが満足できるフォーマットを作ることです.そのため、それらの文法はCJSのようにコンパクトです.一方で、それらの動的能力はCJSには及ばない(例えば、通常の文法で条件付きモジュールをロードすることができない).これは二つの主要な利点があります.
  • エクスポートしていないものを導入しようとしたらコンパイルされるエラー
  • .
  • は、ES 6のモジュールを非同期的に導入することができる.
  • ES 6のモジュール標準は二つの部分から構成されています.
  • 宣言式文法(導入とエクスポート用).
  • プログラミングされたAPIキャリア:モジュールをどのようにロードし、どのように条件付きでモジュールをロードするかを設定します.
  • ES 6モジュールは、JavaScriptファイル全体を困惑しながら対象または関数としてカプセル化する必要がなくなりました.これは、以前の多くの非同期モジュールローダーのブラウザでのやり方と同じです.逆に、最上階で定義できますが、関数と明示的に定義された導出変数だけが、モジュールの消費者に露出されます.
    var privateVar = "this is a variable private to the module";
    export var publicVar = "and this one is public";
    
    export function returnPrivateVar() {
       return privateVar;
    };
    
    上のコードをmymodule.jsに保存すると、今は2つの方法で導入できます.または指定された関数と変数を導入することによって、モジュールを導入することによってモジュールの対象となります.
    import { returnPrivateVar, publicVar } from 'mymodule';
    console.log(returnPrivateVar());
    
    または:
    import 'mymodule' as mm;
    console.log(mm.returnPrivateVar());
    
    新しいモジュール標準もモジュールの埋め込み定義と動的モジュールロードをサポートします.Axelの文章を読んでもいいし、関連情報ももっと分かります.
    現在新しいモジュール文法を試したいなら、いくつかの方法があります.
  • s 6-module-transpilerはES 6モジュールをAMD仕様またはCommunJS仕様のモジュール
  • にコンパイルします.
  • ES 6 module loaderは、動的にES 6スタイルをロードするモジュール
  • をサポートすることができる.
  • require-hmは、require.jsのプラグインであり、ES 6モジュール
  • のロードをサポートすることができます.
  • TraceurはGoogleの変換コンパイラであり、多くのJavascriptの特性をサポートするためにES 6モジュール
  • を含む.
  • Type Scriptはマイクロソフトの選択可能なJavascriptのバージョンであり、ES 6モジュール
  • もサポートしています.
    ECMAScript 6 Modules:What Aree The y and How to Use The m Today
    本文の校閲に対して馬国耀さんに感謝します.
    InfoQ中国語ステーションに投稿したり、コンテンツ翻訳に参加したりします[email protected].新浪微博(@InfoQ)や騰訊微博(@InfoQ)を通じて、私たちに関心を持ってくれて、編集者や他の読者や友達と交流することも歓迎します.