通用模組定義(UMD)

當我們的模組需要由許多不同的模組載入器(例如 AMD,CommonJS)匯入時,使用 UMD(通用模組定義)模式。

模式本身由兩部分組成:

  1. IIFE(立即呼叫的函式表示式),用於檢查使用者正在實現的模組載入器。這將有兩個論點; rootthis 對全域性範圍的引用)和 factory(我們宣告模組的函式)。

  2. 一個建立我們模組的匿名函式。這作為模式的 IIFE 部分的第二個引數傳遞。此函式傳遞任意數量的引數以指定模組的依賴關係。

在下面的例子中,我們檢查 AMD,然後檢查 CommonJS。如果這些載入器都沒有被使用,我們就會迴歸到使模組及其依賴關係全域性可用。

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(['exports', 'b'], factory);
    } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
        // CommonJS
        factory(exports, require('b'));
    } else {
        // Browser globals
        factory((root.commonJsStrict = {}), root.b);
    }
}(this, function (exports, b) {
    //use b in some fashion.

    // attach properties to the exports object to define
    // the exported module properties.
    exports.action = function () {};
}));