首頁 > web前端 > 前端問答 > vue中什麼是按需加載

vue中什麼是按需加載

青灯夜游
發布: 2022-01-10 17:36:45
原創
4449 人瀏覽過

在vue中,按需加載又稱延遲加載或懶加載,就是根據需要去加載資源;vue項目實現按需加載有3種方式:vue異步組件技術、es提案的import() 、webpack提供的「require.ensure()」。

vue中什麼是按需加載

本教學操作環境:windows7系統、vue2.9.6版,DELL G3電腦。

按需加載,又稱延遲加載或懶加載,就是根據需要去加載資源,只有在使用到的時候才會加載進來。

為什麼需要按需載入

隨著網路的發展,一個網頁需要承載的功能越來越多。對於採用單頁應用程式作為前端架構的網站來說,會面臨一個網頁需要載入的程式碼量很大的問題,因為許多功能都集中的做到了一個 HTML 裡。這會導致網頁載入緩慢、互動卡頓,使用者體驗將非常糟糕。

導致這個問題的根本原因在於一次性的載入所有功能對應的程式碼,但其實用戶每一階段只可能使用其中一部分功能。所以解決以上問題的方法就是使用者目前需要用什麼功能就只載入這個功能對應的程式碼,也就是所謂的按需載入。

vue專案實作按需載入的方法

vue專案實作按需載入的3種方式:vue非同步元件技術、es提案的import()、webpack提供的require.ensure()

vue非同步元件技術

vue-router設定路由,使用vue的非同步元件技術,可以實現按需加載。 這種方式下一個元件產生一個js檔案

用例:

{
    path: '/promisedemo',
    name: 'PromiseDemo',
    component: resolve => require(['../components/PromiseDemo'], resolve)
}
登入後複製

es提案的import() (推薦)

webpack官方文件:webpack中使用import()

vue官方文件:路由懶載入(使用import())

使用案例:

// 下面2行代码,没有指定webpackChunkName,每个组件打包成一个js文件。
const ImportFuncDemo1 = () => import('../components/ImportFuncDemo1')
const ImportFuncDemo2 = () => import('../components/ImportFuncDemo2')

// 下面2行代码,指定了相同的webpackChunkName,会合并打包成一个js文件。
// const ImportFuncDemo = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo')
// const ImportFuncDemo2 = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo2')
export default new Router({
    routes: [
        {
            path: '/importfuncdemo1',
            name: 'ImportFuncDemo1',
            component: ImportFuncDemo1
        },
        {
            path: '/importfuncdemo2',
            name: 'ImportFuncDemo2',
            component: ImportFuncDemo2
        }
    ]
})
登入後複製

webpack提供的require.ensure()

#vue-router設定路由,使用webpack的require.ensure技術,也可以實作按需載入。

這種情況下,多個路由指定相同的chunkName,會合併打包成一個js檔案。

舉例如下:

{
    path: '/promisedemo',
    name: 'PromiseDemo',
    component: resolve => require.ensure([], () => resolve(require('../components/PromiseDemo')), 'demo')
},
{
    path: '/hello',
    name: 'Hello',
    // component: Hello
    component: resolve => require.ensure([], () => resolve(require('../components/Hello')), 'demo')
}
登入後複製

【相關推薦:vue.js教學

以上是vue中什麼是按需加載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板