很多人在前端项目打包时经常会遇到打包出来的体积过大的问题,过大的资源体积会导致页面加载速度缓慢。在使用 element-ui 的时候如果单纯引入整个 element-ui 库,就会导致打包体积过大的问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import Vue from 'vue' import App from './App' import router from './router'
import 'element-ui/lib/theme-chalk/index.css' import elementUI from 'element-ui' Vue.use(elementUI)
new Vue({ el: '#app', router, components: { App }, template: '<App/>' })
|
按需加载可以大大减少打包体积。本篇文章将介绍如何实现 element-ui 的按需加载。步骤如下:
(一) npm 安装 babel-plugin-component
1
| npm install babel-plugin-component -D
|
(二) 配置 babel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| module.exports = { presets: [ ["@babel/preset-env", { "modules": false }], ], plugins: [ "transform-vue-jsx", "@babel/plugin-transform-runtime", [ "component", { "libraryName": "element-ui", "styleLibraryName": "theme-chalk" } ] ] }
|
(三) vue 组件部分引入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import Vue from 'vue' import App from './App' import router from './router'
import 'element-ui/lib/theme-chalk/form.css' import 'element-ui/lib/theme-chalk/form-item.css' import 'element-ui/lib/theme-chalk/input.css' import 'element-ui/lib/theme-chalk/button.css' import 'element-ui/lib/theme-chalk/notification.css'
import { Form, FormItem, Input, Button, Notification } from 'element-ui' Vue.use(Form); Vue.use(FormItem); Vue.use(Input); Vue.use(Button); Vue.prototype.$notify = Notification;
new Vue({ el: '#app', router, components: { App }, template: '<App/>' })
|