vxe-table 按需加载,详细教程
- 首先通过 cli 创建一个项目
1 2 3 | vue create my-project cd my-project npm run serve |
- 项目创建完成,正常跑起来
3. 先来打个包
1 | npm run build |
打包完成,空项目的情况下 vue 打包后的大小为 128KB
- 接着安装 vxe-table
1 | npm install vxe-table xe-utils |
引用依赖 src/plugins/utils.js
1 | import 'xe-utils' |
引用表格 src/plugins/table.js
1 2 3 4 5 | import Vue from 'vue' import VXETable from 'vxe-table' import 'vxe-table/lib/index.css' Vue.use(VXETable) |
引用 src/main.js
1 2 | import './plugins/utils' import './plugins/table' |
写一个简单的表格用来测试 src/components/HelloWorld.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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <template> <div> <vxe-table border round highlight-hover-row :data="tableData"> <vxe-table-column type="seq" title="Number" width="80"></vxe-table-column> <vxe-table-column field="name" title="Name" sortable></vxe-table-column> <vxe-table-column field="sex" title="Sex" sortable></vxe-table-column> <vxe-table-column field="address" title="Address"></vxe-table-column> </vxe-table> </div> </template> <script> export default { name: 'MyTable', data () { return { tablePage: { currentPage: 1, pageSize: 15, totalResult: 0 }, tableData: [ { id: 10001, name: 'Test1', role: 'Developer', sex: 'Man', address: 'Address abc123' }, { id: 10002, name: 'Test2', role: 'Developer', sex: 'Female', address: 'Address rttry' }, { id: 10003, name: 'Test3', role: 'Developer', sex: 'Man', address: 'Address xxxxx' } ] } } } </script> |
到此就基本完成了,大致目录结构如下:
5. 到此安装完成,打个包看看,现在打包后的大小为 538KB
6. 由于只用了表格的基本功能,不需要安装全部功能,我们可以通过按需加载的方式来减少包的体积
安装按需加载所依赖的工具 babel-plugin-import
1 | npm install babel-plugin-import -D |
修改配置文件 babel.config.js,增加 plugins 配置项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | module.exports = { presets: [ '@vue/cli-plugin-babel/preset' ], plugins: [ [ 'import', { libraryName: 'vxe-table', style: true // 是否按需加载样式 } ] ] } |
修改安装文件 src/plugins/table.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import Vue from 'vue' import XEUtils from 'xe-utils' import { VXETable, Icon, Header, Column, Table } from 'vxe-table' import zhCN from 'vxe-table/lib/locale/lang/zh-CN' // 导入默认的国际化(如果项目中使用多语言,则应该导入到 vue-i18n 中) VXETable.setup({ i18n: key => XEUtils.get(zhCN, key) }) // 先按需导入依赖的模块 Vue.use(Icon) Vue.use(Header) Vue.use(Column) // 最后安装核心库 Vue.use(Table) |
按需加载到此就配置完成了,接下来再打个包看看
按需加载后体积小了一半,只剩下 321KB,查看官网的例子