Vue組件開發之異步組件詳解

一、引入

我們在講異步組件之前,我們再來回顧一下webpack打包時的分包操作。我們可以使用import()異步加載模塊來實現分包操作。import函數的返回值是一個Promise,所以我們可以使用then進行下一步處理。

在這裡插入圖片描述

如下圖所示為打包後的文件目錄,因為我們如果同步加載math.js文件,此時就不存在中間的文件,此時當瀏覽器請求資源時,就會很慢。

在這裡插入圖片描述

二、vue中的異步組件

通過上面的webpack配置我們明白瞭為什麼要進行分包操作,此時我們想一個問題,如果一個網站的頁面在用戶第一次瀏覽器時就將全部頁面都下載瞭,這樣會出現一個問題,就是首屏加載過慢。

如果我們的項目過大瞭,對於某些組件我們想要異步加載(也就是分包處理),此時Vue給我們提供瞭一個函數defineAsyncComponentdefineAsyncComponent可以傳入兩種類型的參數,第一個是函數,該函數需要返回Promise,第二個參數是一個對象類型,對異步函數進行配置。

第一種寫法:函數寫法

在這裡插入圖片描述

打包後的文件

在這裡插入圖片描述

第二種寫法:對象寫法

在這裡插入圖片描述

在這裡插入圖片描述

如圖所示是可以實現分包操作,相面詳細介紹一下傳入對象中的選項。

loader選項:需要一部加載的模塊,對應的是一個函數。

loadingComponent:加載過程中顯示的組件。

errorComponent:加載失敗時顯示的組件。

delay:給出時間,當加載時間超過該時間,直接顯示error組件。

suspensible:定義組件是否可掛起,默認是true

三、異步組件和suspense

在這裡插入圖片描述

suspense是一個實驗功能的API,其功能可變。

在這裡插入圖片描述

Suspense存在兩個插槽,一個是default, 另一個是fallback,default插槽中的內容是當該插槽中的組件可以顯示則展示,如果不可以展示,則顯示fallback中的內容。

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!   

推薦閱讀: