一個單頁面應用,採用組件化的開發模式,沒有采用懶加載,運用webpack打包,每次啓動首頁都會加載所有組件,但此時只是訪問了首頁而已,就形成了大量組件污染加載的狀況。css
只在訪問當前頁面時加載對應組件,避免頁面組件所有加載。html
咱們能夠經過實現路由懶加載和異步組件解決問題。vue
在vue項目中使用路由懶加載很是簡單,咱們要作的就是把路由對應的組件定義成異步組件:webpack
router.jsweb
// 單獨引入 import App from '../App' // 其餘路由異步加載 // require.ensure 是 Webpack 的特殊語法,用來設置 code-split point,實現代碼分割 const home = r => require.ensure([], () => r(require('../page/home/home')), 'home') const city = r => require.ensure([], () => r(require('../page/city/city')), 'city') export default [{ path: '/', component: App, //頂層路由,對應index.html children: [ //二級路由。對應App.vue //地址爲空時跳轉home頁面 { path: '', redirect: '/home' }, //首頁城市列表頁 { path: '/home', component: home }, //當前選擇城市頁 { path: '/city/:cityid', component: city // or //component: resolve => { require(['../page/city/city'], resolve); } } ] }]
注意數組
文檔:webpack 如何使用 require.ensure() 進行代碼拆分。異步
// require.ensure()語法: require.ensure(dependencies: String[], callback: function(require), chunkName: String)
require接收三個參數:ide
main.js函數
最後,不要忘記在main.js將router引入。組件化
import routes from './router/router'