引言
angular2相比1引入了更完善的模塊系統(tǒng),回憶ng1的應(yīng)用中通常在頁(yè)面的html標(biāo)簽或body標(biāo)簽中添加ng-app節(jié)點(diǎn),值為應(yīng)用的模塊名,整個(gè)應(yīng)用都將圍繞這個(gè)模塊來(lái)展開(kāi),到了ng2,模塊概念完善了很多,并且再不是由一個(gè)模塊來(lái)統(tǒng)治整個(gè)應(yīng)用(當(dāng)然非要這么做也可以),本文就將敘述一番ng2中的模塊體系,以及如何統(tǒng)籌ng2模塊最終組合成一個(gè)完整的應(yīng)用。
一、根模塊、子模塊與惰性加載
先說(shuō)根模塊。一個(gè)ng2應(yīng)用至少要有一個(gè)根模塊,包含ng2自帶的BrowserModule,并聲明為引導(dǎo)模塊,在應(yīng)用啟動(dòng)時(shí)將從此模塊展開(kāi)。
隨著應(yīng)用的擴(kuò)大,所有的事情都在一個(gè)模塊中完成難免會(huì)變亂(某種程度上看ng1應(yīng)用就是這么做的,并且細(xì)分了控制器來(lái)拆分應(yīng)用,這其實(shí)浪費(fèi)了最頂層模塊的意義),所以自然而然能想到,可以將系統(tǒng)分為多個(gè)模塊,每個(gè)模塊都只做各自的事情而互不干擾,所以進(jìn)一步的思路就是,用來(lái)根模塊來(lái)引導(dǎo)程序并管理所有子模塊(通過(guò)路由定向以及為它們提供全局配置與服務(wù)實(shí)例),所有的具體業(yè)務(wù)就交給各個(gè)子模塊來(lái)完成。
然后會(huì)有一個(gè)問(wèn)題,那就是既然系統(tǒng)已經(jīng)被這么多個(gè)子模塊瓜分了,并且這些子模塊也不可能同時(shí)全部都會(huì)被使用,也就是只有其被激活時(shí)才有用,那仍然在應(yīng)用引導(dǎo)時(shí)從根模塊加載所有子模塊必然會(huì)導(dǎo)致性能的浪費(fèi)以及拖慢執(zhí)行速度。此時(shí)惰性加載模塊就派上用場(chǎng)了,將一個(gè)子模塊定義為惰性加載后,只有在通過(guò)路由激活此模塊時(shí)才會(huì)開(kāi)始加載此模塊(并且ng2甚至支持異步預(yù)加載,即后臺(tái)預(yù)加載懶加載的模塊,這樣當(dāng)懶加載模塊需要被加載時(shí)其實(shí)其已經(jīng)加載完成了,又加快了響應(yīng)速度)。
二、除了模塊之外
網(wǎng)友評(píng)論