vxe-table 按需加载,详细教程


vxe-table 按需加载,详细教程

  1. 首先通过 cli 创建一个项目
1
2
3
vue create my-project
cd my-project
npm run serve

  1. 项目创建完成,正常跑起来

在这里插入图片描述
3. 先来打个包

1
npm run build

在这里插入图片描述
打包完成,空项目的情况下 vue 打包后的大小为 128KB

  1. 接着安装 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,查看官网的例子