一个单页面应用,采用组件化的开发模式,没有采用懒加载,运用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'