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