在大型單頁面應用中,處於對效能的考慮和首屏載入速度的要求,我們一般都會使用webpack的**分割和vue-router的路由懶載入功能將我們的**分成乙個個模組,並且只在需要的時候才從伺服器載入乙個模組。
但是這種解決方案也有其問題,當網路環境較差時,我們去首次訪問某個路由模組,由於載入該模組的資源需要一定的時間,那麼該段時間內,我們的應用就會處於無響應的狀態,使用者體驗極差。
這種情況,我們一方面可以縮小路由模組**的體積,靜態資源使用cdn儲存等方式縮短載入時間,另一方面則可以路由元件上使用非同步元件,顯示loading和error等狀態,使使用者能夠得到清晰明了的操作反饋。
vue官方文件-動態元件&非同步元件
宣告方法,基於vue動態元件工廠函式來返回乙個promise物件
/**
* 處理路由頁面切換時,非同步元件載入過渡的處理函式
* @param asyncview 需要載入的元件,如 import('@/components/home/home.vue')
* @return 返回乙個promise物件
*/function lazyloadview (asyncview) );
return promise.resolve()
});}複製**
引入路由
const helloworld = () => lazyloadview(import('@/components/helloworld'))
複製**
vue-router中使用
routes: [
]複製**
至此,改造已經完成,當你首次載入某乙個元件的資源時(可以將網速調為 slow 3g,效果更明顯),就會顯示你在loading元件的內容,而當超出超時時間仍未載入完成該元件時,那麼將顯示error元件的內容(建議error元件盡量簡單,因為當處於低速網路或者斷網情況下時,error元件內的資源等有可能出現無法載入的問題) vue 路由懶載入,元件非同步載入
用於緩解首屏載入緩慢 1.vue非同步元件 vue router配置路由 使用vue的非同步元件實現按需載入 2.webpack 的 require.ensure vue router配置路由,使用webpack的require.ensure,也可實現 require.ensure 接受三個引數 語...
vue按需載入元件,非同步元件
說實話,我一開始也不知道什麼叫按需載入元件,元件還可以按需載入?後來知道了 學不完啊.沒關係,看我的 按需載入元件,或者非同步元件,主要是應用了component的 is 屬性 template中的 這裡的每乙個按鈕,都要顯示不同的元件,所以我讓他們使用了同乙個方法名 1 template slot...
vue路由非同步元件和懶載入案例
最近研究了vue效能優化,涉及到vue非同步元件和懶載入。一番研究得出如下的解決方案。案例 首先是元件,建立四個元件分別命名為first second three和four 內容如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 first 我是第乙...