咱們能夠把不一樣路由對應的組件分割成不一樣的代碼塊,而後當路由被訪問的時候才加載對應組件。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> ) } })