Vue組件開發之異步組件詳解
一、引入
我們在講異步組件之前,我們再來回顧一下webpack打包時的分包操作。我們可以使用import()
異步加載模塊來實現分包操作。import
函數的返回值是一個Promise
,所以我們可以使用then
進行下一步處理。
如下圖所示為打包後的文件目錄,因為我們如果同步加載math.js文件,此時就不存在中間的文件,此時當瀏覽器請求資源時,就會很慢。
二、vue中的異步組件
通過上面的webpack配置我們明白瞭為什麼要進行分包操作,此時我們想一個問題,如果一個網站的頁面在用戶第一次瀏覽器時就將全部頁面都下載瞭,這樣會出現一個問題,就是首屏加載過慢。
如果我們的項目過大瞭,對於某些組件我們想要異步加載(也就是分包處理),此時Vue給我們提供瞭一個函數defineAsyncComponent
defineAsyncComponent
可以傳入兩種類型的參數,第一個是函數
,該函數需要返回Promise
,第二個參數是一個對象類型,對異步函數進行配置。
第一種寫法:函數寫法
打包後的文件
第二種寫法:對象寫法
如圖所示是可以實現分包操作,相面詳細介紹一下傳入對象中的選項。
loader選項
:需要一部加載的模塊,對應的是一個函數。
loadingComponent
:加載過程中顯示的組件。
errorComponent
:加載失敗時顯示的組件。
delay
:給出時間,當加載時間超過該時間,直接顯示error
組件。
suspensible
:定義組件是否可掛起,默認是true
。
三、異步組件和suspense
suspense是一個實驗功能的API,其功能可變。
Suspense
存在兩個插槽,一個是default
, 另一個是fallback
,default
插槽中的內容是當該插槽中的組件可以顯示則展示,如果不可以展示,則顯示fallback
中的內容。
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- 一文搞懂Vue3中的異步組件defineAsyncComponentAPI的用法
- React中代碼分割的4種實現方式
- vue3 vite異步組件及路由懶加載實戰示例
- Vue3異步數據加載組件suspense的使用方法
- vue cli3配置image-webpack-loader方式