CommonJS差ES6モジュールとモジュール:
モジュールのCommonJS浅いコピー、モジュールはES6モジュール参照され、即ち、読み取り専用ES6モジュールを維持し、その値が、特定のポイントにポインタが変更されず、同様のCONST変更できない
インポートインタフェースを変更することはできません読み取り専用(読み取り専用)、可変値です。それはにその変数のポインタを変更することはできませんが、内部ポインタ変数を変更することができ、再割り当てするcommonJSは(へのポインタを変更する)ことができ、
しかしES6モジュールの割り当ては、エラーをコンパイルします。
<スクリプトタイプ= "テキスト/ JavaScriptを"> // CommonJSで浅いコピーモジュール // lib.js VARのカウンタ= 3 ; 関数incCounter(){ カウンタ ++ ; } module.exportsは = { カウンタ:カウンタ、 incCounter。 incCounter }; //はmain.js VARの MODを必要とする=( './ LIB' ); にconsole.log(mod.counter); // 3 mod.incCounter(); にconsole.log(mod.counter); // 3 </スクリプト> ます。<script type = "text / javascriptの"> // ES6モジュール是对模块的引用// lib.js 輸出せカウンタ= 3 ; エクスポート関数incCounter(){ カウンタ ++ 。 } // main.js './lib'からインポート{カウンタ、incCounter} 。 console.log(カウンタ)// 3 incCounter()。 console.log(カウンタ)// 4 </スクリプト> ます。<script type = "text / javascriptの"> // m1.js 輸出のvarのfoo = 'bar'に。 setTimeout(() => FOO = 'バズ'、500 ); // m2.js 「./m1.js'からインポート{FOO} 。 console.log(FOO)。// バー のsetTimeout(()=>はconsole.log(FOO)、500); // バズ </ SCRIPT>
CommonJS共通モジュールおよびES6モジュール:
CommonJSおよびES6モジュール、すなわち、オブジェクト属性値の変更の内部に、導入されたオブジェクトに割り当てることができません。
しかし、あなたは属性を追加することができます
<スクリプトタイプ= "テキスト/ javascriptの"> //はlib.js エクスポートLET OBJ = {}; // main.js './lib'からインポート{OBJ} 。 obj.prop = 123。// OK OBJ = {}; // 例外TypeError </ SCRIPT>