一年前,剛來網(wǎng)易實習的時候接觸了NEJ,那是第一次接觸模塊化開發(fā),感覺想出這個idea的人簡直是天才,同時也對于這種框架的實現(xiàn)非常好奇,慚愧的是,那時甚至連jQuery的原理都不知道。

隨著這一年對于JS面向對象的理解有所加深,看著《JavaScript設計模式》就跟著自己動手碼碼代碼,所以這是一篇讀書筆記,并不是發(fā)明創(chuàng)造,并且這個加載器是比較簡陋的,很有改進空間。

模塊的長相

模塊采用的是匿名模塊,它的js絕對路徑作為它的惟一標識:

define([    '{lib}dom',    '{pro}extend'    ], function(dom, extend) {    //TODO})

異步加載的思路

從上面我們可以看出,模塊是由define函數(shù)來定義,傳入?yún)?shù)為:依賴列表和回調(diào)函數(shù),為了實現(xiàn)依賴注入,要等到依賴列表的所有js加載完后再來執(zhí)行回調(diào)函數(shù)。

所以第一步,我們循環(huán)遍歷依賴列表,然后依次加載列表的模塊,可想而知,在循環(huán)遍歷加載模塊的代碼的結構應該是下面這樣子的:

//modules = ['lib/dom