3 回答

TA貢獻(xiàn)19條經(jīng)驗(yàn) 獲得超44個(gè)贊
1. 首先,通過 use 方法來加載入口模塊,并接收一個(gè)回調(diào)函數(shù), 當(dāng)模塊加載完成, 會(huì)調(diào)用回調(diào)函數(shù),并傳入對應(yīng)的模塊。use 方法會(huì) check 模塊有沒有緩存,如果有,則從緩存中獲取模塊,如果沒有,則創(chuàng)建并加載模塊。
2. 獲取到模塊后,模塊可能還沒有 load 完成,所以需要在模塊上綁定一個(gè) "complete" 事件,模塊加載完成會(huì)觸發(fā)這個(gè)事件,這時(shí)候才調(diào)用回調(diào)函數(shù)。
3. 創(chuàng)建一個(gè)模塊時(shí),id就是模塊的地址,通過創(chuàng)建 script 標(biāo)簽的方式異步加載模塊的代碼(factory),factory 加載完成后,會(huì) check factory 中有沒有 require 別的子模塊:
? ?- 如果有,繼續(xù)加載其子模塊,并在子模塊上綁定 "complete" 事件,來觸發(fā)本身 的 "complete" 事件;
? ?- 如果沒有則直接觸發(fā)本身的 "complete" 事件。
4. 如果子模塊中還有依賴,則會(huì)遞歸這個(gè)過程。
5. 通過事件由里到外的傳遞,當(dāng)所有依賴的模塊都 complete 的時(shí)候,最外層的入口模塊才會(huì)觸發(fā) "complete" 事件,use 方法中的回調(diào)函數(shù)才會(huì)被調(diào)用。
添加回答
舉報(bào)