当打包构建项目时,JavaScript
包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。
具体需要 3 步:
- 安装
@babel/plugin-syntax-dynamic-import
包。 - 在
babel.config.js
配置文件中声明该插件。 - 将路由改为按需加载的形式,示例代码如下:
Javascript
// /* webpackChunkName: "group-foo" */表示路由分组
// './Foo.vue' 表示路由存放路径
const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
const Baz = () => import(/* webpackChunkName: "group-boo" */ './Baz.vue')
|
分在同一个组内的组件,当请求其中某一个组件时,组内其它组件也会同时请求。
关于路由懒加载的详细文档,可参考如下链接:
https://router.vuejs.org/zh/guide/advanced/lazy-loading.html
@babel/plugin-syntax-dynamic-import 插件介绍传送门
npm
Javascript
npm install --save-dev @babel/plugin-syntax-dynamic-import
|
打开 vue-ui
面板,选择开发依赖,输入 @babel/plugin-syntax-dynamic-import
进行安装
。
然后打开 babel.config.js
文件,在 plugins
数组内添加我们安装的依赖: '@babel/plugin-syntax-dynamic-import'
,具体位置见下文所示:
Javascript
// 项目发布阶段需要用到的 babel 插件
const prodPlugins = []
// 判断编译模式为生产环境
if (process.env.NODE_ENV === 'production') {prodPlugins.push('transform-remove-console')
}module.exports = {presets: ['@vue/cli-plugin-babel/preset'],plugins: [['component',{libraryName: 'element-ui',styleLibraryName: 'theme-chalk'}],...prodPlugins,'@babel/plugin-syntax-dynamic-import']
}
|
最后,将每一个组件更改为懒加载的形式: