關於Vue中的按需加載我就簡單介紹一下:大概就是我們所有的東西都會在app.js里面,但是我們並不需要把所有的組件都一次性加載進來,我們可以在需要它的時候再將它加載進來,話不多說,開車!
1、webpack2 + ES5結合開車
沒發車前,我們頁面加載的js是這樣的:
任你隨便點,你就只加載了這一個app.js文件,你所有的組件都在這里面
准備發車:把你的路由中引入組件的方式改成這樣:
再來看看我們的頁面上加載的js文件(開車后):
只有當你加載了這個CityPicker組件的時候,我才引入它,也就是0.js,這就實現了異步加載,大概意思就是把我們的組件變成了一個函數,剛開始的時候它是不執行的,只有當你需要它的時候來觸發它了它才會加載進來。
1、webpack代碼分割結合AMD規范的require
開車前就不說了,無論你怎么掙扎,你所有的東西都在app.js里,一次性全給你加再進來,准備發車:
發車准備:把你路由里面引入組件的形式變成這樣:
發車后的形態:
漂亮,同樣達到了我們想要的效果
3、webpack的ensure來進行終極開車:
簡單說一下它的思想:webpack編譯時,會靜態的解析代碼中的require.ensure(),同時將模塊添加到一個分開的chunk中,新的chunk會被webpack通過jsonp來按需加載。此方法內部依賴於Promise。
一共有三個參數:
參數一:字符串數組,模塊的依賴項,會提前進行加載,一般情況下為空。
參數二:依賴項加載完成之后的回調函數。
參數三:chunk名。相同chunk名的文件,所有的依賴都會被放進相同的文件束中。
開始發車
發車前:將你的引入組件的方式改成這樣:
發車后:
同樣實現了異步加載,並且最終要的是,City就是chunk名,相同chunk名的的文件,所有的依賴都會被放到相同的文件束中。
異步加載可以大大的提高性能,避免不必要的資源浪費,今天關於vue的性能優化就先到這里,下課,額再補充幾個Vue中性能優化的方法吧:
1. 可以使用computed計算屬性來代替一些函數方法,(函數的話每次都會調用一次,計算屬性是根據它依賴的值變化了才會執行);
2. 對於一些不需要頻繁調用的形式,使用v-if來取代v-show。(v-if的話是只有它存在了才會進行渲染,而v-show是無論如何都會渲染,只不過是將它隱藏了而已);
3. 為item設置唯一的key值。(快速精准的定位到diff);
4. SSR(服務器端渲染);
5. 骨架屏加載。(在數據還沒來之前顯示骨架屏,提高用戶體驗);
6. loading圖。(提高用戶體驗度,用戶第一);
7. 圖片按需加載,圖片懶加載技術。(避免不必要的資源浪費)。
...未完待續