首頁 >web前端 >js教程 >優化vue-router懶加載

優化vue-router懶加載

php中世界最好的语言
php中世界最好的语言原創
2018-06-11 15:16:121378瀏覽

這次帶給大家優化vue-router懶加載,的注意事項有哪些,下面就是實戰案例,一起來看一下。

用過vue-router都知道它可以實現模組js的懶加載,即只有當需要時才去加載對應模組的js腳本文件,以加速主頁的顯示。例如只有第一次使用者點擊某個「使用者資訊」按鈕或選單時,才下載「使用者資訊」這個模組的js元件。

懶載入的實現,依賴與webpack下AMD模式require函數的功能。 webpack會將非同步require的文件產生一個獨立的js文件,呼叫時非同步下載這個js且在完成後再執行它。開發專案中實現的關鍵程式碼是:

const basicInfo = {
  path: '/user',
  component: resolve => require(['./basicInfo.vue'], resolve) 
}
//然后将这个basicInfo加入路由表中

但這裡有個問題:從使用者點擊「使用者資訊」選單開始,到js檔案下載完畢執行開始,由於從網路下載js有一個時間延遲,這段期間使用者介面是沒有任何回應的,讓使用者感覺點上去無效,常常會重複再次點擊。特別是js檔案大而網路速慢時更明顯。因此,在這個過程中添加一個Loading的載入提示很有必要。

我們分析這行程式碼:

resolve => require(['./basicInfo.vue'], resolve)

它是一個函數,執行了require的過程,完成後再呼叫resolve回呼函數。我們只要封裝一下,在require執行之前顯示Loading,然後在載入完成執行回呼的時候隱藏Loading,也就實現這個需求了。如下:

const basicInfo = {
  path: '/user',
  component: resolve => {
    [显示Loading]
    require(['./basicInfo.vue'], component => {
      [隐藏Loading]
      resolve(component)
    })
  }
};

顯示和隱藏Loading的程式碼,可依照自己的UI框架處理就行。例如element-ui:

import { Loading } from 'element-ui';
var unique;
export default {
  show() {
    let opt = {body: true, text: 'Loading...'};
    if(!unique) unique = Loading.service(opt);
  },
  resolve(resolve) {
    return function (component) {
      if (unique) {
        unique.close();
        unique = null;
      }
      resolve(component)
    }
  }
}
const basicInfo = {
  path: '/user',
  component: resolve => {
    spinRoute.show();
    require(['./basicInfo.vue'], spinRoute.resolve(resolve))
  }
};

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

怎麼發布vue todo-list應用程式

使用mint-ui在手機端做出三級聯動

以上是優化vue-router懶加載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn