「JavaScript」はどのようにあなたのプラグインをCommonJS、AMD、CMDと生JSに互換させますか?
1784 ワード
モジュール標準
Common JS
インターフェースを外部に提供するためには、
AMD
私たちは
直接使えるコードは以下の通りです.
Common JS
CommonJS
は、3つのグローバル変数module
、exports
、require
、およびAMD
を有する.しかし、require
にもexports
という大域変数があるので、この変数を用いて検出しない.インターフェースを外部に提供するためには、
module.exports
(すなわちCMD
)にインターフェースをバインドすることができる.function MyModule() {
// ...
}
if(typeof module !== `undefined` && typeof exports === `object`) {
module.exports = MyModule;
}
CMDdefine
仕様では、define.cmd
関数が公有属性CMD
を有すると定義されている.exports.MyModule = ...
モジュールには、return
を使用してリターンする2つの方法があります.AMD
AMD
仕様では、define
関数は、同じ公有属性define.amd
を有する.AMD
のパラメータはこのモジュールの依存性である.では、インタフェースはどうやってAMD
に提供されますか?オブジェクトを返すので、このモジュールのインターフェースとしてこのオブジェクトを使用します.function MyModule() {
// ...
}
if(typeof define === `function` && define.amd) {
define(function() { return MyModule; });
}
締め括りをつける私たちは
AMD
モジュールインターフェース、CMD
モジュールインターフェースを提供するほか、元のJSインターフェースも提供します.CMD
およびAMD
は、いずれも外部インターフェースを定義するためにreturn
を使用することができるので、コードに統合することができる.直接使えるコードは以下の通りです.
;(function(){
function MyModule() {
// ...
}
var moduleName = MyModule;
if (typeof module !== 'undefined' && typeof exports === 'object') {
module.exports = moduleName;
} else if (typeof define === 'function' && (define.amd || define.cmd)) {
define(function() { return moduleName; });
} else {
this.moduleName = moduleName;
}
}).call(this || (typeof window !== 'undefined' ? window : global);