懶加載也叫延遲加載,即在需要的時候進行加載,隨用隨載。本文主要為大家介紹了關於Vue程式碼分割懶載入的實作方法,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。希望能幫助大家。
為什麼需要懶加載
在單頁應用程式中,如果沒有應用懶加載,運用webpack打包後的文件將會異常的大,造成進入首頁時,需要加載的內容過多,延時過長,不利於使用者體驗,而運用懶加載則可以將頁面進行劃分,需要的時候加載頁面,可以有效的分擔首頁所承擔的加載壓力,減少首頁加載用時
如何與webpack配合實作元件懶載入
1、在webpack設定檔中的output路徑設定chunkFilename屬性
output: { path: resolve(__dirname, 'dist'), filename: options.dev ? '[name].js' : '[name].js?[chunkhash]', chunkFilename: 'chunk[id].js?[chunkhash]', publicPath: options.dev ? '/assets/' : publicPath },
chunkFilename路徑將會作為元件懶載入的路徑
2.配合webpack支援的非同步載入方法
resolve => require([URL], resolve), 支持性好
( ) => system.import(URL) , webpack2官網上已經聲明將逐漸廢除, 不建議使用
() => import(URL), webpack2官網推薦使用,屬於es7範疇, 需要配合babel的syntax-dynamic-import插件使用, 具體使用方法如下
npm install --save-dev babel-core babel-loader babel-plugin-syntax-dynamic-import babel-preset-es2015
use: [{ loader: 'babel-loader', options: { presets: [['es2015', {modules: false}]], plugins: ['syntax-dynamic-import'] } }]
##而在webpack > 2的時代,vue做程式碼分割懶載入更加的easy,不需要loader,不需要require.ensure。
import解決一切。
分割層級
Vue程式碼分割懶載入包含以下幾個層級:
1、 元件層級分割懶載
# 2、 router路由層級
3、 Vuex 模塊
組件層級代碼分割
//全局组件 Vue.component('AsyncComponent', () => import('./AsyncComponent')) //局部注册组件 new Vue({ // ... components: { 'AsyncComponent': () => import('./AsyncComponent') } }) // 如果不是default导出的模块 new Vue({ // ... components: { 'AsyncComponent': () => import('./AsyncComponent').then({ AsyncComponent }) => AsyncComponent } })
路由層級代碼分割
const AsyncComponent= () => import('./AsyncComponent') new VueRouter({ routes: [ { path: '/test', component: AsyncComponent} ] })
const store = new Vuex.Store() import('./store/test').then(testModule => { store.registerModule('test', testModule) })
總結
在一般專案中,我們依照router和components層面分割(或只使用router分割)就足夠了。大型專案可能三者都會用到,但用法都很簡單,不是麼?
相關推薦:
用Js實作懶載入和跨域的實作步驟JavaScript實作圖片的懶載入方法介紹圖片的懶載入問題以上是關於Vue程式碼分割懶加載的詳細內容。更多資訊請關注PHP中文網其他相關文章!