Common Js,AMD,CMD,ES 6 Modules理解


1.commnoJs:
同期ローディングモジュールは、主要実践者のnodejsで、サービスエンドモジュールファイルがローカルディスクに保存されているため、読み込みが速いので、nodejsによく使われています.ネットワークに制限されている理由は、ブラウザ側での使用には適用されません.ブラウザ側は、モジュールファイルを非同期的にロードしている場合が多いです.
//calculate.js

function add(a){
    return a++;
}
module.exports={
    add:add
}

//index.js
var obj = require('./calculate.js');
obj.add(1);


注意:requireは初めてモジュールをロードした後、メモリにオブジェクトを作成します.
 
2.CMD:
近くに依存して、実行を遅らせることを推賞して、主な実践者seajs;
define(function(require,exports,module){
    var a = require('./a.js');
    a.doSomething();
    var b = require('./b.js');
    b.doSomething();
});
 
3.AMD:
前に依存し、事前に実行し、主な実践者requirejsを推奨します.

//  A     a b
define(['./a.js','./b.ja'],function(a,b){
    a.doSomething();
    b.doSomething();
});
 
4.ES 6 Modules:
ブラウザとサーバーの共通のモジュールソリューションを目指し、主にimportとexportの2つのコマンドを使用します.
import a from './a.js';
import b from './b.js';

a.doSomething();
b.doSomething();

function c(){
    ......
}
export default c;
注意:ES 6 Modulesは対象ではないので、importコマンドは静的に解析され、コンパイル時にコードを導入します.コード実行時にロードするのではなく、条件のロードができません.
ES 6 ModulesとCommunJsの違い:
1.comnoJSは値のコピーを出力しますが、ES 6モジュールは値の参照を出力します.
2.ES 6モジュールはコンパイルする時、jsエンジンはシナリオを静的に分析します.importコマンドに出会うと、リードオンリー参照が生成されます.コードを実行する時、この参照を通してモジュールの中に値を取ります.元の値がimportローディングの値に変わります.
3.CommunJsは実行時にロードされ、CommunJsモジュールは対象となります.すなわち、requireモジュールの時にオブジェクトを生成し、その対象に値を取ります.
4.ES 6モジュールをコンパイルする時にロードします.ES 6モジュールはオブジェクトではなく、exportを通じて出力の指定コードを表示します.