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

vue-router路由懶加載及實現(xiàn)的3種方式

 更新時間:2021年02月28日 10:38:46   作者:Ajiia  
這篇文章主要給大家介紹了關(guān)于vue-router路由懶加載及實現(xiàn)的3種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

什么是路由懶加載?

也叫延遲加載,即在需要的時候進行加載,隨用隨載。

官方解釋:

 1:當打包構(gòu)建應(yīng)用時,JavaScript 包會變得非常大,影響頁面加載。

 2:如果我們能把不同路由對應(yīng)的組件分割成不同的代碼塊,然后當路由被訪問的時候才加載對應(yīng)組件,這樣就更加高效了。

官方在說什么呢?為什么需要懶加載?

 1:首先,我們知道路由中通常會定義很多不同的頁面。

 2:這個頁面這項目build打包后,一般情況下,會放在一個單獨的js文件中

 3:但是,如果很多的頁面都放在同一個js文件中,必然會造成這個頁面非常大

 4:如果我們一次性的從服務(wù)器中請求下來這個頁面,可能會花費一定時間,用戶體驗不好

 5:如何避免這種情況發(fā)生呢?使用路由懶加載就可以了

繼續(xù)解釋原由?

    1:像vue這種單頁面應(yīng)用,如果沒有應(yīng)用懶加載,運用webpack打包后的文件將會異常的大。

    2:造成進入首頁時,需要加載的內(nèi)容過多,時間過長,會出啊先長時間的白屏,即使做了loading也是不利于用戶體驗。

    3:而運用懶加載則可以將頁面進行劃分,需要的時候加載頁面,可以有效的分擔首頁所承擔的加載壓力,減少首頁加載用時

也就是說:進入頁面不用也不需要一次性加載過多資源造成加載時間過程!

路由懶加載做了什么事情?

 1:主要作用是將路由對應(yīng)的組件打包成一個個的js代碼塊

 2:只有在這個路由被訪問到的時候,才加載對應(yīng)的組件,否則不加載!

即:只有在這個路由被訪問到的時候,才加載對應(yīng)的組件,否則不加載!

1:.如何實現(xiàn)路由懶加載??

 vue項目實現(xiàn)路由按需加載(路由懶加載)的三種方式:

  1:Vue異步組件

  2:ES6標準語法import()---------推薦使用!?。。?!

  3:webpack的require,ensure()

2.Vue異步加載技術(shù)

  1:vue-router配置路由,使用vue的異步組件技術(shù),可以實現(xiàn)懶加載,此時一個組件會生成一個js文件。

  2:component: resolve => require(['放入需要加載的路由地址'], resolve)

 {
 path: '/problem',
 name: 'problem',
 component: resolve => require(['../pages/home/problemList'], resolve)
 }

3.ES6推薦方式imprort ()----推薦使用

  1:直接將組件引入的方式,import是ES6的一個語法標準,如果需要瀏覽器兼容,需要轉(zhuǎn)化成es5的語法。

  2:推薦使用這種方式,但是注意wepack的版本>2.4

  3:vue官方文檔中使用的也是import實現(xiàn)路由懶加載

  4:上面聲明導入,下面直接使用

import Vue from 'vue';
import Router from 'vue-router';
// 官網(wǎng)可知:下面沒有指定webpackChunkName,每個組件打包成一個js文件。
const Foo = () => import('../components/Foo')
const Aoo = () => import('../components/Aoo')
// 下面2行代碼,指定了相同的webpackChunkName,會合并打包成一個js文件。
// const Foo = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/Foo')
// const Aoo = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/Aoo')
export default new Router({
 routes: [
  {
   path: '/Foo',
   name: 'Foo',
   component: Foo
  },
  {
   path: '/Aoo',
   name: 'Aoo',
   component: Aoo
  }
 ]
})

4.webpack提供的require.ensure()實現(xiàn)懶加載:

  1:vue-router配置路由,使用webpack的require.ensure技術(shù),也可以實現(xiàn)按需加載。

  2:這種情況下,多個路由指定相同的chunkName,會合并打包成一個js文件。

  3:require.ensure可實現(xiàn)按需加載資源,包括js,css等。他會給里面require的文件單獨打包,不會和主文件打包在一起。

  4:第一個參數(shù)是數(shù)組,表明第二個參數(shù)里需要依賴的模塊,這些會提前加載。

 5:第二個是回調(diào)函數(shù),在這個回調(diào)函數(shù)里面require的文件會被單獨打包成一個chunk,不會和主文件打包在一起,這樣就生成了兩個chunk,第一次加載時只加載主文件。

 6:第三個參數(shù)是錯誤回調(diào)。

 7:第四個參數(shù)是單獨打包的chunk的文件名

此處代碼參考原文鏈接:https://blog.csdn.net/qq_41998083/article/details/109726402

import Vue from 'vue';
import Router from 'vue-router';
const HelloWorld=resolve=>{
		require.ensure(['@/components/HelloWorld'],()=>{
			resolve(require('@/components/HelloWorld'))
		})
	}
Vue.use('Router')
export default new Router({
	routes:[{
	{path:'./',
	name:'HelloWorld',
	component:HelloWorld
	}
	}]
})

4.import和require的比較(了解)

1:import 是解構(gòu)過程并且是編譯時執(zhí)行

2:require 是賦值過程并且是運行時才執(zhí)行,也就是異步加載

3:require的性能相對于import稍低,因為require是在運行時才引入模塊并且還賦值給某個變量

至此:關(guān)于VueRouter懶加載的基本知識以及使用方式已經(jīng)介紹完畢,邏輯道理很簡單, 關(guān)鍵在實踐,感謝觀看!

總結(jié)

到此這篇關(guān)于vue-router路由懶加載及實現(xiàn)的3種方式的文章就介紹到這了,更多相關(guān)vue-router路由懶加載實現(xiàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解vue的數(shù)據(jù)劫持以及操作數(shù)組的坑

    詳解vue的數(shù)據(jù)劫持以及操作數(shù)組的坑

    這篇文章主要介紹了vue的數(shù)據(jù)劫持以及操作數(shù)組的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Vue?前端路由工作原理hash與history的區(qū)別

    Vue?前端路由工作原理hash與history的區(qū)別

    這篇文章主要介紹了Vue?前端路由工作原理hash與history的區(qū)別,文章圍繞主題展開vue-router的工作原理的簡單介紹,感興趣的朋友可以學習一下
    2022-07-07
  • 使用vue-cli3打包dist路徑問題修改打包配置

    使用vue-cli3打包dist路徑問題修改打包配置

    這篇文章主要介紹了使用vue-cli3打包dist路徑問題修改打包配置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue完整項目構(gòu)建(進階篇)

    Vue完整項目構(gòu)建(進階篇)

    這篇文章主要介紹了Vue完整項目構(gòu)建(進階篇)的相關(guān)資料,需要的朋友可以參考下
    2018-02-02
  • Element中el-table動態(tài)合并單元格(span-method方法)

    Element中el-table動態(tài)合并單元格(span-method方法)

    本文主要介紹了Element中el-table動態(tài)合并單元格(span-method方法),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • 微信小程序如何像vue一樣在動態(tài)綁定類名

    微信小程序如何像vue一樣在動態(tài)綁定類名

    這篇文章主要介紹了微信小程序如何像vue一樣在動態(tài)綁定類名,文中給大家提到了vue與微信小程序的區(qū)別,需要的朋友可以參考下
    2018-04-04
  • Vuejs使用addEventListener的事件如何觸發(fā)執(zhí)行函數(shù)的this

    Vuejs使用addEventListener的事件如何觸發(fā)執(zhí)行函數(shù)的this

    這篇文章主要介紹了Vuejs使用addEventListener的事件觸發(fā)執(zhí)行函數(shù)的this方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue.js學習之計算屬性

    Vue.js學習之計算屬性

    Vue.js 的內(nèi)聯(lián)表達式非常方便,但它最合適的使用場景是簡單的布爾操作或字符串拼接。如果涉及更復雜的邏輯,你應(yīng)該使用計算屬性。下面這篇文章主要給大家介紹了Vue.js中的計算屬性,需要的朋友可以參考借鑒,一起來看看吧。
    2017-01-01
  • uniapp頁面完成水印添加功能代碼示例(自定義文字)

    uniapp頁面完成水印添加功能代碼示例(自定義文字)

    這篇文章主要介紹了uniapp頁面完成水印添加功能(自定義文字)的相關(guān)資料,包括如何編寫頁面代碼、數(shù)據(jù)代碼以及如何展示效果圖,通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • vue.js集成echarts時遇到的一些問題總結(jié)

    vue.js集成echarts時遇到的一些問題總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于vue.js集成echarts遇到的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04

最新評論

招远市| 莱西市| 论坛| 宁津县| 五寨县| 西林县| 江西省| 泰顺县| 阿合奇县| 调兵山市| 海晏县| 广东省| 红桥区| 全椒县| 玛多县| 阜南县| 宜黄县| 南木林县| 义马市| 电白县| 延边| 桐城市| 康乐县| 贵溪市| 旺苍县| 玛纳斯县| 精河县| 顺义区| 达日县| 博野县| 丽水市| 连城县| 吉安市| 兴业县| 玉山县| 辽阳市| 广宗县| 孟连| 交城县| 滦南县| 江口县|