vue項(xiàng)目中路由懶加載的三種方式(簡(jiǎn)潔易懂)
1 . vue異步組件技術(shù) ==== 異步加載
在大型應(yīng)用中,我們可能需要將應(yīng)用分割成小一些的代碼塊,并且只在需要的時(shí)候才從服務(wù)器加載一個(gè)模塊。為了簡(jiǎn)化,Vue 允許你以一個(gè)工廠函數(shù)的方式定義你的組件,這個(gè)工廠函數(shù)會(huì)異步解析你的組件定義。Vue 只有在這個(gè)組件需要被渲染的時(shí)候才會(huì)觸發(fā)該工廠函數(shù),且會(huì)把結(jié)果緩存起來(lái)供未來(lái)重渲染
vue-router配置路由 , 使用vue的異步組件技術(shù) , 可以實(shí)現(xiàn)按需加載 . 但是,這種情況下一個(gè)組件生成一個(gè)js文件
/* vue異步組件技術(shù) */
{ path: '/home', name: 'home', component: resolve => require(['@/components/home'],resolve) },
{ path: '/index', name: 'Index', component: resolve => require(['@/components/index'],resolve) },
{ path: '/about', name: 'about', component: resolve => require(['@/components/about'],resolve) }2.組件懶加載方案二 路由懶加載(使用import)
每個(gè) () => import() 都會(huì)生成一個(gè)獨(dú)立的JS文件
也就是說(shuō):只要使用這個(gè)語(yǔ)法,就是告訴 webpack 這就是一個(gè)代碼分割點(diǎn),這樣生成一個(gè)獨(dú)立的js文件,來(lái)實(shí)現(xiàn)按需加載的功能
const 組件名=() => import('組件路徑');
// 下面2行代碼,沒(méi)有指定webpackChunkName,每個(gè)組件打包成一個(gè)js文件。
/* const Home = () => import('@/components/home')
const Index = () => import('@/components/index')
const About = () => import('@/components/about') */
// 下面2行代碼,指定了相同的webpackChunkName,會(huì)合并打包成一個(gè)js文件。
把組件按組分塊
const Home = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '@/components/home')
const Index = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '@/components/index')
const About = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '@/components/about')
{ path: '/about', component: About }, { path: '/index', component: Index }, { path: '/home', component: Home }3.webpack提供的require.ensure()
vue-router配置路由,使用webpack的require.ensure技術(shù),也可以實(shí)現(xiàn)按需加載。
這種情況下,多個(gè)路由指定相同的chunkName,會(huì)合并打包成一個(gè)js文件。
/* 組件懶加載方案三: webpack提供的require.ensure() */
{ path: '/home', name: 'home', component: r => require.ensure([], () => r(require('@/components/home')), 'demo') },
{ path: '/index', name: 'Index', component: r => require.ensure([], () => r(require('@/components/index')), 'demo') },
{ path: '/about', name: 'about', component: r => require.ensure([], () => r(require('@/components/about')), 'demo-01') }
// r就是resolve
const list = r => require.ensure([], () => r(require('../components/list/list')), 'list');
// 路由也是正常的寫(xiě)法 這種是官方推薦的寫(xiě)的 按模塊劃分懶加載
const router = new Router({
routes: [
{
path: '/list/blog',
component: list,
name: 'blog'
}
]
})到此這篇關(guān)于vue項(xiàng)目中路由懶加載的三種方式(簡(jiǎn)潔易懂)的文章就介紹到這了,更多相關(guān)vue 路由懶加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解?Vue虛擬DOM如何提高前端開(kāi)發(fā)效率
這篇文章主要為大家介紹了詳解?Vue虛擬DOM如何提高前端開(kāi)發(fā)效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Vue實(shí)現(xiàn)導(dǎo)出Excel表格文件提示“文件已損壞無(wú)法打開(kāi)”的解決方法
xlsx用于讀取解析和寫(xiě)入Excel文件的JavaScript庫(kù),它提供了一系列的API處理Excel文件,使用該庫(kù),可以將數(shù)據(jù)轉(zhuǎn)換Excel文件并下載到本地,適用于在前端直接生成Excel文件,這篇文章主要介紹了Vue實(shí)現(xiàn)導(dǎo)出Excel表格,提示文件已損壞,無(wú)法打開(kāi)的解決方法,需要的朋友可以參考下2024-01-01
Vue+Vite+Axios項(xiàng)目多環(huán)境以及部署前后端跨域
本文介紹了如何在Vue+Vite+Axios項(xiàng)目中處理多環(huán)境部署和跨域問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
vue.js樹(shù)形組件之刪除雙擊增加分支實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家講解vue.js樹(shù)形組件之刪除雙擊增加分支功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下2017-02-02
Vue組件傳值過(guò)程接收不成功的問(wèn)題及解決
這篇文章主要介紹了Vue組件傳值過(guò)程接收不成功的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
vue從倉(cāng)庫(kù)state中取不到數(shù)據(jù)的問(wèn)題
這篇文章主要介紹了vue從倉(cāng)庫(kù)state中取不到數(shù)據(jù)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
使用 vue 實(shí)現(xiàn)滅霸打響指英雄消失的效果附demo
這篇文章主要介紹了使用 vue 實(shí)現(xiàn)滅霸打響指英雄消失的效果 demo,需要的朋友可以參考下2019-05-05
基于Vue實(shí)現(xiàn)可以拖拽的樹(shù)形表格實(shí)例詳解
因業(yè)務(wù)需求,需要一個(gè)樹(shù)形表格,并且支持拖拽排序,任意未知插入,github搜了下,真不到合適的,大部分樹(shù)形表格都沒(méi)有拖拽功能,所以決定自己實(shí)現(xiàn)一個(gè)。這里分享一下實(shí)現(xiàn)過(guò)程,需要的朋友可以參考下2018-10-10

