1. 程式人生 > >關於vue與react路由中懶載入的使用

關於vue與react路由中懶載入的使用

vue路由的懶載入

懶載入 --->延遲載入 ,在需要的時候進行載入,隨用隨載

像vue單頁面應用,如果麼有應用懶載入,運用webpack打包後的檔案將會異常的大,造成進入首頁時,需要載入的內容過多,時間過長,會長時間出現白屏,即使做了loading也是不利於使用者體驗,而運用懶載入則可以將頁面進行劃分,需要的時候載入頁面,可以有效地分擔首頁所承擔的載入壓力,減少首頁載入用時

  • webpack程式碼分割

webpack 可以幫助我們將程式碼分成不同的邏輯塊,在需要的時候載入這些程式碼。
使用 require.ensure() 來拆分程式碼
require.ensure() 是一種使用 CommonJS 的形式來非同步載入模組的策略。在程式碼中通過 require.ensure([<fileurl>]) 引用模組
require.ensure(dependencies: String[], callback: function(require), chunkName: String)
第一個引數指定依賴的模組,
第二個引數是一個函式,
在這個函式裡面你可以使用 require 來載入其他的模組,webpack 會收集 ensure 中的依賴,將其打包在一個單獨的檔案中,
在後續用到的時候使用 jsonp 非同步地載入進去。

const User = resolve => {
	require.ensure(['./components/user/User.vue'],()=>{
		resolve(require('./components/user/User.vue'));
	});
}

react路由的懶載入

  •  lazyload-loader

// webpack 配置檔案中 使用lazyload-loader(必須將lazuyload-loader 放置在use的最右側)

module: {

  rules: [

   {

    test: /\.(js|jsx)$/,,

    use: [

     'babel-loader',

     'lazyload-loader'

    ]

},
  • 業務程式碼中

// 使用lazy! 字首 代表需要懶載入的Router

import Shop from 'lazy!./src/view/Shop';

// Router 正常使用

<Route path="/shop" component={Shop} />