AMD模組定義規範

2022-07-19 11:15:14 字數 1750 閱讀 1201

amd 即asynchronous module definition,中文名是「非同步模組定義」的意思。它是乙個在瀏覽器端模組化開發的規範,伺服器端的規範是commonjs。

模組將被非同步載入,模組載入不影響後面語句的執行。所有依賴某些模組的語句均放置在**函式中。

amdrequirejs在推廣過程中對模組定義的規範化的產出。

amd規範只定義了乙個函式define,它是全域性變數。函式的描述為:

define(id?, dependencies?, factory);
id:指定義中模組的名字,可選;如果沒有提供該引數,模組的名字應該預設為模組載入器請求的指定指令碼的名字。如果提供了該引數,模組名必須是「頂級」的和絕對的(不允許相對名字)
模組名的格式

模組名是用正斜槓分割的有意義單詞的字串

單詞須為駝峰形式,或者".",".."

模組名不允許副檔名的形式,如「.js」

模組名可以為 "相對的" 或 "頂級的"。如果首字元為「.」或「..」則為相對的模組名

頂級的模組名從根命名空間的概念模組解析

相對的模組名從 "require" 書寫和呼叫的模組解析

模組名用來唯一標識定義中模組,它們同樣在依賴性陣列中使用:

依賴dependencies:是乙個當前模組依賴的,已被模組定義的模組標識的陣列字面量。

依賴引數是可選的,如果忽略此引數,它應該預設為["require", "exports", "module"]。然而,如果工廠方法的長度屬性小於3,載入器會選擇以函式的長度屬性指定的引數個數呼叫工廠方法。

工廠方法factory:模組初始化要執行的函式或物件。依賴模組必須根據模組的工廠方法優先順序執行,並且執行的結果應該按照依賴陣列中的位置順序以引數的形式傳入(定義中模組的)工廠方法中。如果為函式,它應該只被執行一次。如果是物件,此物件應該為模組的輸出值。
建立乙個名為"alpha"的模組,使用了require,exports,和名為"beta"的模組:

define("alpha", ["require", "exports", "beta"], function (require, exports, beta) 

});

乙個返回物件的匿名模組:

define(["alpha"], function (alpha) 

};});

乙個沒有依賴性的模組可以直接定義物件:

define(

});

乙個使用了簡單commonjs轉換的模組定義:

define(function (require, exports, module) ;

});

require api介紹: 

amd規範中文版:

目前,實現amd的庫有requirejs 、curl 、dojo 、nodules等。

AMD模組定義規範

amd 即asynchronous module definition,中文名是 非同步模組定義 的意思。它是乙個在瀏覽器端模組化開發的規範,伺服器端的規範是commonjs。模組將被非同步載入,模組載入不影響後面語句的執行。所有依賴某些模組的語句均放置在 函式中。amd是requirejs在推廣過...

非同步模組定義AMD

全稱為asynchronous module definition,非同步元件 或模組 定義。amd是一種機制,使用這種機制,元件和它的依賴就可以實現非同步載入。define id?dependencies?factory 元件id是元件的唯一識別符號,在和元件id一對一的指令碼檔案 乙個指令碼檔案...

實現AMD規範

廢話不說,直接上 由於require依賴程式時要取模組依賴,所以所有的依賴應該有乙個共同的載體,也就是物件,可以通過物件訪問到這些依賴 let factories function define mod,dependences,factory function require mods,callba...