最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue路由組件按需加載的幾種方法小結(jié)

 更新時間:2018年07月12日 11:28:27   作者:前端小兵  
這篇文章主要介紹了vue路由組件按需加載的幾種方法小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. 普通加載

使用vue-cli構(gòu)建項(xiàng)目后,我們會在Router文件夾下面的index.js里面引入相關(guān)的路由組件,如:

import Hello from '@/components/Hello'
import Boy from '@/components/Boy'
import Girl from '@/components/Girl'

這樣做的結(jié)果就是webpack在npm run build的時候會打包成一個整個的js文件,如果頁面一多,會導(dǎo)致這個文件非常大,加載緩慢,為了解決這個問題,需要將他分成多個小文件,而且還要實(shí)現(xiàn)異步按需加載,即用到了再加載,而不用一股腦全部加載

2. webpack的require.ensure()實(shí)現(xiàn)按需加載

語法:require.ensure(dependencies: String[], callback: function(require), errorCallback: function(error), chunkName: String)

  1. dependencies:字符串構(gòu)成的數(shù)組,聲明 callback 回調(diào)函數(shù)中所需的所有模塊,模塊作為依賴被加載
  2. callback:只要加載好全部依賴,webpack 就會執(zhí)行此函數(shù)。require 函數(shù)的實(shí)現(xiàn),作為參數(shù)傳入此函數(shù)。當(dāng)程序運(yùn)行需要依賴時,可以使用 require() 來加載依賴。函數(shù)體可以使用此參數(shù),來進(jìn)一步執(zhí)行 require() 模塊。
  3. errorCallback:當(dāng) webpack 加載依賴失敗時,會執(zhí)行此函數(shù)。
  4. chunkName:由 require.ensure() 創(chuàng)建出的 chunk 的名字。通過將同一個 chunkName 傳遞給不同的 require.ensure() 調(diào)用,我們可以將它們的代碼合并到一個單獨(dú)的 chunk 中,從而只產(chǎn)生一個瀏覽器必須加載的 bundle。

使用方法一:

require.ensure([], function(require){
  require('./a.js');
});
// 此時會單獨(dú)打包出一個js文件,沒有自定義名稱的話,會被命名為1.js(有hash時候會帶上md5)

使用方法二:

require.ensure(['./a.js'], function(require) {
  require('./b.js');
});

1、此時a.js作為依賴被加載,但是沒有被執(zhí)行(官方文檔說的only loads the modules)
2、a.js和b.js會被打包成一個文件。
3、回調(diào)函數(shù)里只require了b.js,只有b.js的內(nèi)容會被執(zhí)行。
4、如果你需要使用a.js的內(nèi)容,需要再加上require('./a.js')

require.ensure(['./list'], function(require){
  var list = require('./list');
  list.show();
});

給require.ensure的第一個參數(shù)傳了['./list'],執(zhí)行到這里的時候list.js會被瀏覽器下載下來,但是并不會執(zhí)行l(wèi)ist.js模塊中的代碼,也就是webpack官網(wǎng)說的,不會進(jìn)行evaluate。真正進(jìn)行evaluate的時候是到了后面這句var list = require('./list');這就是所謂的懶執(zhí)行。

寫在函數(shù)中的多個模塊會被打包在一起,這一點(diǎn)和上面沒有區(qū)別。另外,寫在數(shù)組中的模塊也會跟他們打包在一起,不管你有沒有手動執(zhí)行。

vue中使用

comst List = resolve => {
  require.ensure([],() => {
    resolve(require('./list'))
  },'list')
}

其實(shí)resolve的作用就是Promise里面那個resolve,在這里就是定義一個異步的組件

使用動態(tài) import語法

const Foo = () => import(/* webpackChunkName: "foo" */ './Foo.vue');
const router = new VueRouter({
 routes: [
  { path: '/foo', component: Foo }
 ]
})
// /* webpackChunkName: "foo" */使用命名chunk,一個特殊的注釋語法來提供 chunk name (需要 Webpack > 2.4)
// webpack要加配置 output需要加個chunkFilename
chunkFilename: '[name].js'

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue結(jié)合el-upload實(shí)現(xiàn)騰訊云視頻上傳功能

    vue結(jié)合el-upload實(shí)現(xiàn)騰訊云視頻上傳功能

    這篇文章主要介紹了vue結(jié)合el-upload實(shí)現(xiàn)騰訊云視頻上傳功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue3+ts深入組件Props實(shí)例詳解

    vue3+ts深入組件Props實(shí)例詳解

    Props是組件之間進(jìn)行數(shù)據(jù)傳遞的一種方式,可以將數(shù)據(jù)從父組件傳遞給子組件,這篇文章主要介紹了vue3+ts深入組件Props的實(shí)例詳解,需要的朋友可以參考下
    2023-09-09
  • 深入Vue-Router路由嵌套理解

    深入Vue-Router路由嵌套理解

    這篇文章主要介紹了深入Vue-Router路由嵌套理解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Vue項(xiàng)目打包部署的實(shí)戰(zhàn)過程記錄

    Vue項(xiàng)目打包部署的實(shí)戰(zhàn)過程記錄

    我們使用nginx部署Vue項(xiàng)目,實(shí)質(zhì)上就是將Vue項(xiàng)目打包后的內(nèi)容同步到nginx指向的文件夾,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目打包部署的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Vue.js實(shí)現(xiàn)實(shí)例搜索應(yīng)用功能詳細(xì)代碼

    Vue.js實(shí)現(xiàn)實(shí)例搜索應(yīng)用功能詳細(xì)代碼

    本文給大家分享Vue.js實(shí)現(xiàn)實(shí)例搜索應(yīng)用功能詳細(xì)代碼,非常不錯,感興趣的朋友參考下吧
    2017-08-08
  • vue router demo詳解

    vue router demo詳解

    這篇文章主要為大家詳細(xì)介紹了vue router demo演示代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • vue之el-menu-item如何更改導(dǎo)航菜單欄選中的背景顏色

    vue之el-menu-item如何更改導(dǎo)航菜單欄選中的背景顏色

    這篇文章主要介紹了vue之el-menu-item如何更改導(dǎo)航菜單欄選中的背景顏色問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue數(shù)據(jù)字典取鍵值方式

    vue數(shù)據(jù)字典取鍵值方式

    這篇文章主要介紹了vue數(shù)據(jù)字典取鍵值方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • element中el-table表頭通過header-row-style設(shè)置樣式

    element中el-table表頭通過header-row-style設(shè)置樣式

    有些時候需要給element-ui表頭設(shè)置不同樣式,本文主要介紹了element中el-table表頭通過header-row-style設(shè)置樣式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • vue里的data要用return返回的原因淺析

    vue里的data要用return返回的原因淺析

    這篇文章主要介紹了vue里的data要用return返回的原因淺析,需要的朋友可以參考下
    2019-05-05

最新評論

宣城市| 五常市| 老河口市| 泸水县| 井陉县| 新兴县| 宝鸡市| 武川县| 巴林左旗| 博兴县| 陕西省| 环江| 横峰县| 福鼎市| 安阳县| 新余市| 平潭县| 大连市| 大安市| 宝山区| 乐清市| 辽宁省| 绥棱县| 句容市| 阳原县| 河东区| 丰宁| 福海县| 峨山| 太保市| 陵水| 镇坪县| 思茅市| 沅江市| 额尔古纳市| 崇礼县| 皮山县| 城固县| 那曲县| 武城县| 铜陵市|