今天來復(fù)習(xí)一下amd規(guī)范
此規(guī)范目前來說也是基本不會用了安吁,逐漸埋沒在前端的歷史長河中
require.js實(shí)現(xiàn)了amd規(guī)范
要使用amd規(guī)范,需要在html頁面中書寫以下代碼:
<!-- data-main屬性得值為入口文件得路徑 -->
<script data-main="./index.js" src="./require.js"></script>
在amd中窟绷,提供了define函數(shù),該函數(shù)接受三個參數(shù)咐柜。分別是模塊的id兼蜈,模塊的依賴項(xiàng),一個回調(diào)函數(shù)(該函數(shù)中是該模塊的代碼)或者一個對象
define(id?: String, dependencies?: String[], factory: Function|Object);
前兩個參數(shù)都是可選的拙友。如果第三個參數(shù)傳的不為string,array,function
則會把第三個參數(shù)當(dāng)成該模塊的導(dǎo)出內(nèi)容为狸。在其他模塊導(dǎo)入該模塊時,拿到的數(shù)據(jù)即為該模塊的第三個參數(shù)的值献宫。
細(xì)節(jié):
- 如果前兩個參數(shù)按照類型傳了的情況下钥平,第三個參數(shù)只要不為函數(shù)实撒,則都會被當(dāng)成該模塊的導(dǎo)出值姊途。
- 如果第一個參數(shù)按照類型傳了的情況下,第二個參數(shù)如果不是數(shù)組類型也不是函數(shù)知态,那么第二個參數(shù)會被當(dāng)成該模塊的導(dǎo)出值捷兰。
- 第一個參數(shù)如果不是字符串,也不是數(shù)組负敏,也不是函數(shù)贡茅,則會被當(dāng)成該模塊的導(dǎo)出值。
其實(shí)還有一些其他的情況,比如第一個參數(shù)傳的是數(shù)組顶考,那么第二個參數(shù)傳遞的內(nèi)容會被當(dāng)成是第三個參數(shù)的內(nèi)容赁还,第三個參數(shù)就不會被處理了。
還有一種情況就是如果沒有傳遞依賴項(xiàng)驹沿,第三個參數(shù)是一個函數(shù)的情況下艘策,會給這個函數(shù)傳遞三個參數(shù),分別是
require渊季,exports朋蔫,module
,這個時候却汉,函數(shù)的內(nèi)部代碼就跟commonjs規(guī)范一樣了