当打包构建应用时,Javascript 包会变得很是大,影响页面加载。若是咱们能把不一样路由对应的组件分割成不一样的代码块,而后当路由被访问的时候才加载对应组件,这样就更加高效了。css
若是在 vue-cli 使用了 babel ,须要添加 syntax-dynamic-import
插件,才能使 Babel 能够正确地解析语法。html
$ npm install --save-dev @babel/plugin-syntax-dynamic-import
安装完成后,配置文件 babel.config.jsvue
module.exports = { "presets": [ "@vue/app" ], "plugins": [ [ "component", { "libraryName": "element-ui", "styleLibraryName": "theme-chalk" }, "syntax-dynamic-import" ] ] }
在 router.js 中的组件引用,做以下改动:webpack
// import Login from '@/views/users/Login' // import Register from '@/views/users/Register' // import Home from './views/Home.vue' // import Report from '@/views/Report.vue' const Login = () => import(/* webpackChunkName: "users" */ '@/views/users/Login.vue') const Register = () => import(/* webpackChunkName: "users" */ '@/views/users/Register.vue') const Home = () => import(/* webpackChunkName: "home" */ '@/views/Home.vue') const Report = () => import(/* webpackChunkName: "report" */ '@/views/Report.vue')
其中 /* webpackChunkName: "home" */
是一个特殊的注释语法,用来提供 chunk name (须要 Webpack > 2.4)。上面处理后,打包的dist目录下的文件以下:web
dist/js/chunk-vendors.70d314fb.js dist/js/app.ff1d5c7f.js dist/js/report.6c761e68.js dist/js/home.fe0e7528.js dist/js/users.ade47d0f.js dist/css/chunk-vendors.a33b2b12.css dist/css/app.133be4a7.css dist/css/report.1d10a2c7.css dist/css/users.c53bf6b0.css dist/css/home.122162a2.css