咱们能够把不一样路由对应的组件分割成不一样的代码块,而后当路由被访问的时候才加载对应组件。javascript
代码html
// router里面的index.js import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'home', /* * 使用动态组件,component能够是一个箭头函数 * @表示src目录 * 若是想在network里面看到动态加载的组件名字,能够加webpackChunkName,同时要在webpack.base.conf.js里面的output里面的filename下面加上chunkFileName * network里面动态加载模块名称 */ component: () => import(/* webpackChunkName: 'home' */'@/pages/Homes') }, { path: '/todos', name: 'Todos', component: () => import(/* webpackChunkName: 'todo' */'@/pages/Todos') } ] })
注意 上面的@表明当前src目录,具体能够去参考webpack的配置vue
webpack.base.conf.js里面添加 chunkFilename: '[name].js'java
output: { path: config.build.assetsRoot, filename: '[name].js', // 须要配置的地方 chunkFilename: '[name].js', publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath }
建立了home和todos两个组件使用了路由懒加载,配置好以后咱们执行npm run dev来运行项目,打开network以后刷新一下,咱们会发现加载了home.js,咱们会发现和上面定义的webpackChunkName名字同样,同时点todos会加载todo.js。这就是路由懒加载的简单使用。webpack
在main.js里面项目的入口咱们能够使用template的语法,也能够使用render函数web
new Vue({ el: '#app', router, components: { App }, /* * 这里使用的template的语法 * 也能够使用render函数,直接return一个html结构 */ // template: '<App/>' render() { return ( <div> <App></App> </div> ) } })