ES6前に、関係者はこのモジュールの構文輸出入を出てきませんでした。
、コードの再利用性を向上グローバルな環境汚染を避けるために、市民は多くのモジュラー実装を書きました:
1.すぐに機能を実行します
(関数(グローバル変数){ globalVariable.test = 関数(){} // ...関数はグローバルスコープを汚染しない、変数を宣言 (グローバル変数)})
2. AMDとCMD
私は長い時間前にこのブログを書いている:2つの仕様AMDとCMD JSモジュラーを
// AMD DEFINE([ './ A'、 './b']、関数(A、B){ // ロードモジュール用いて完成させることができる A. ド() B. ドを() }) // CMDは、 DEFINE(関数(必要、輸出、Module1の){ // ロードモジュール // 要求することができる任意の場所書き込み機能本体遅延ロード実装 するvar A =必要とする( './ A' ) a.doSomething() })
3. CommonJs
これは今まで、多くの人々はまだ使用し、モジュール式の標準NodeJsです。
CONST MOD =は(」./ mod.js'を必要とします)。 module.exportsは = {MOD}。 exports.test = 123。
それはそれは、各モジュールのファイルはレイヤ機能に包まれている、である、また、非常に単純な原理だ、そして最終的には戻りmodule.exportsはを追加し、この機能の実装に相当の時間を必要とします
4. ES6公式の輸出入
:私もブログ記事を書いた具体的な使用ES6のインポート、エクスポート文言を
「./mod.js'からインポートMOD 母せ = '123' であれば(mod.a === 1 ){ CONST名 = 'MOD2' 。 インポート( `。 /${name}.js`).then(mod2 => { // 拿到MOD2的东西 }) } エクスポート{ MOD、 母としてデフォルト }
地域社会との違いについてはこちらを語っまだ比較的アクティブCommonJsとESモジュールバーあり
インポートの一方ESモジュール1 CommonJsは、同期または非同期(推奨読書:あってもよいから「XXX」、同期がロードされる必要https://segmentfault.com/q/1010000005680390)
2.(サポートはif文の内側にロードされ、目標はスプライシング動的にロードすることができます)動的ロードをサポートし、CommonJs()の同期を直接要求し、ESモジュールのインポートと()は非同期
3. CommonJs値がコピーされ、ESモジュールが同じメモリを指している、もちろん、一般的なメモリが、通常の一般的なタイプのCommonJS複製だけでなく、共有メモリESモジュールオブジェクトの同じタイプであります