欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue動態導入模塊

李中冰1年前10瀏覽0評論

在Vue中,我們經常需要使用動態導入模塊的功能。動態導入模塊可以幫助我們減小初始bundle的大小,只有在需要使用時才會加載模塊。

// 例子,采用Promise
function loadComponent() {
// 需要為Chunk的名稱,對應webpack配置的output.chunkFilename
return import(/* webpackChunkName: "[request]" */ `./SomeComponent.vue`);
}

Vue官方也提供了異步組件加載的功能,在import()語法的基礎之上,進一步封裝了一些邏輯,方便我們使用。

const AsyncComponent = () =>({
// 指定將要渲染的組件
component: import('./SomeComponent.vue'),
// 異步加載時應當渲染的組件
loading: LoadingComponent,
// 加載組件失敗時應當渲染的組件
error: ErrorComponent,
// 顯示加載組件之前的延遲時間
delay: 200,
// 最長加載時間
timeout: 5000
})

在使用vue-router中,異步加載組件同樣是非常必要的,這里我們需要結合webpackrequire.ensure方法進行使用。

// 第一種方式
const router = new Router({
routes: [
{
path: '/about',
component(resolve) {
require.ensure(['./About.vue'], () =>{
resolve(require('./About.vue'))
})
}
}
]
})
// 第二種方式
const router = new Router({
routes: [
{
path: '/about',
component: () =>import('./About.vue')
}
]
})

第一種方式是require.ensure方法,它可以將一個動態語塊分割成較小的塊。require.ensure的第一個參數是依賴的模塊,第二個參數是回調函數,在依賴滿足后被執行,解析成的代碼塊被異步回調函數引用和執行。resolve是異步加載成功之后的回調函數。

第二種方式是import()語法,它可以動態地導入 JavaScript 模塊。如果我們要使用vue-router來進行異步路由的配置,就可以直接使用該語法進行代碼分割,vue-cli會自動提取異步塊作為單獨的文件。關于異步路由,我們的代碼也會更加簡潔易讀。

總之,Vue的異步組件機制可以幫助我們優化應用的性能,同時又不會影響代碼的編寫,可以說是非常優秀的一種設計。