JSモジュール化のいくつかの規範のまとめ
common JS特徴: 1、モジュールは複数回ロードできますが、一回目のロード時に一回だけ実行して、その結果はキャッシュされます.後で再読み込みして、直接キャッシュ結果を読み取ります.モジュールを再起動するには、キャッシュをクリアする必要があります.2、モジュールローディングは次のコードの実行をブロックし、モジュールローディングが完了するまで継続することができます.同期ローディング.環境:サーバ環境 アプリケーション:nodejsのモジュール仕様は、common JSを参照して実現される. 文法: 1、導入:require('パス')2、導出:module.exportとexports注意:module.exportsとexportsの違いはexportsがmodule.exportsに対する引用の一つであり、Nodeがモジュールごとにexport変数を提供し、module.exportsを指すことに相当する.これは各モジュールのヘッドに相当し、var export=module.exportがあります.このような命令です demo 特徴: 1、非同期ローディング2、管理モジュール間の依存性は、コードの作成とメンテナンスに便利である.環境:ブラウザ環境 アプリケーション:requireJSは、AMD仕様を参照して実現された である.文法: 1、導入:require(''モジュール名')、function('モジュール変数参照'){/コード};3、エクスポート:define(function(){return'); demo 特徴 1、CMDはAMDに基づいて改善された仕様であり、AMDとは依存モジュールの実行タイミング処理が異なり、CMDは近距離依存であり、AMDは前置依存である.環境:ブラウザ環境 アプリケーション:seajsはUMD仕様を参照して実装され、requireJSの最新バージョンも一部UMD仕様の実装 を参照しています.文法: 1、導入:define(function);2、導出:define(function(){return'); demo 特徴: 1、AMDとcommon JS仕様に対応していると同時に、グローバル参照にも対応している方式環境:ブラウザまたはサーバ環境 アプリケーション:なし 文法: 1、導入導出規範がなく、次のような一般的な書き方しかない.一般的な書き方: 特徴: 1、必要に応じて2、importとexportコマンドをロード(コンパイルする時にロード)するのはモジュールのトップレベルだけで、コードブロックの中(例えば:if文)ではいけません.import()文はコードブロックの中で非同期的な動的な読み込みが可能です.環境:ブラウザまたはサーバ環境(今後はサポート可能) アプリケーション:ES 6の最新文法サポート規範 文法: 1、導入:import{モジュール名A,モジュール名B…}from'モジュールパス'2、導出:exportとexport default 3、import('モジュールパス').then()方法注意:exportはオブジェクト形式の導出のみをサポートし、値の導出はサポートされていません.export defaultコマンドは指定モジュールのデフォルト出力に使用され、サポート値のみが導出されます.しかし、一つだけ指定されています.本質的にはdefaultという変数または方法を出力します. 規範:
// a.js
// :var exports = module.exports;
exports.a = 'Hello world'; // :module.exports.a = 'Hello world';
// b.js
var moduleA = require('./a.js');
console.log(moduleA.a); // hello world
AMD// a.js
define(function (){
return {
a:'hello world'
}
});
// b.js
require(['./a.js'], function (moduleA){
console.log(moduleA.a); // :hello world
});
CMD// a.js
define(function (require, exports, module){
exports.a = 'hello world';
});
// b.js
define(function (require, exports, module){
var moduleA = require('./a.js');
console.log(moduleA.a); // :hello world
});
UMD(function (root, factory) {
if (typeof define === 'function' && define.amd) {
//AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
//Node, CommonJS
module.exports = factory(require('jquery'));
} else {
// (root window)
root.returnExports = factory(root.jQuery);
}
}(this, function ($) {
//
function myFunc(){};
//
return myFunc;
}));
ES 6 module/* */
//
export 1;
//
var m = 1;
export m;
//
if (x === 2) {
import MyModual from './myModual';
}
/* */
//
export var m = 1;
//
var m = 1;
export {m};
//
var n = 1;
export {n as m};
//
var n = 1;
export default n;
//
if (true) {
import('./myModule.js')
.then(({export1, export2}) => {
// ...·
});
}
//
Promise.all([
import('./module1.js'),
import('./module2.js'),
import('./module3.js'),
])
.then(([module1, module2, module3]) => {
···
});