AMD、CommonJS、UMD

要點總結:

  • AMD:異步模塊寫法(define中可以用exports,exports其實就是導出的模塊對象)
  • CommonJS:同步模塊寫法(使用exportsmodule.exports來導出模塊)
  • UMD:通用模塊寫法,即 AMD + CommonJS

UMD寫法示例:

(function(root, factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD
        define(['jquery'], factory);
    } else if (typeof module === "object" && typeof module.exports === "object") {
        // Node, CommonJS之類的
        module.exports = factory(require('jquery'));
    } else {
        /**
         * 瀏覽器全局變量(root 即 window)
         * returnExports即綁定到window對象上的變量名
         */
        root.returnExports = factory(root.jQuery);
    }
}(this, function($) {
    // 方法
    function myFunc() {
        // 與 $ 有關的一些邏輯代碼
    };

    // 暴露公共方法
    return myFunc;
}));

注意事項:

AMD定義模塊時,define方法的第三個參數(shù),即回調方法中也可以使用 requireexports,exports就是你導出的模塊對象,所以,你可以將屬性或方法掛載到exports

define("alpha", ["require", "exports"], function (require, exports) {
    var app_root_1 = require("./components/app/app-root");
    exports.IonicApp = app_root_1.IonicApp;
});

像上面這個例子,在回調函數(shù)中又依賴了其他模塊(./components/app/app-root),導出的模塊alpha其實就是exports對象,上面掛載了IonicApp屬性


參考文獻:

延伸閱讀:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容