vxe-table Import on demand 按需加载 详细教程

vxe-table Import on demand 按需加载 详细教程

  1. 首先通过 cli 创建一个项目
vue create my-project
cd my-project
npm run serve
  1. 项目创建完成,正常跑起来

vxe-table Import on demand 按需加载 详细教程_第1张图片
3. 先来打个包

npm run build

vxe-table Import on demand 按需加载 详细教程_第2张图片
打包完成,空项目的情况下 vue 打包后的大小为 128KB

  1. 接下来全局安装 vxe-table
npm install vxe-table xe-utils

引用依赖 src/plugins/utils.js

import 'xe-utils'

引用表格 src/plugins/table.js

import Vue from 'vue'
import VXETable from 'vxe-table'
import 'vxe-table/lib/index.css'

Vue.use(VXETable)

引用 src/main.js

import './plugins/utils'
import './plugins/table'

写一个简单的表格用来测试 src/components/HelloWorld.vue

<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>

到此就基本完成了,大致目录结构如下:
vxe-table Import on demand 按需加载 详细教程_第3张图片
vxe-table Import on demand 按需加载 详细教程_第4张图片
5. 到此安装完成,打个包看看,现在打包后的大小为 538KB

vxe-table Import on demand 按需加载 详细教程_第5张图片
6. 由于只用了表格的基本功能,不需要安装全部功能,我们可以通过按需加载的方式来减少包的体积

安装按需加载所依赖的工具 babel-plugin-import

npm install babel-plugin-import -D

修改配置文件 babel.config.js,增加 plugins 配置项

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  /**
   * 注意:如果配置了按需导入那么就无法使用全局安装,因为全局的代码被插件拦截掉了,只保留按需的代码
   * 报错:VXETable is not defined
   * 解决:去掉按需插件配置即可
   */
  plugins: [
    [
      'import',
      {
        libraryName: 'vxe-table',
        style: true // 是否按需加载样式
      }
    ]
  ]
}

修改安装文件 src/plugins/table.js

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)

按需加载到此就配置完成了,接下来再打个包看看
vxe-table Import on demand 按需加载 详细教程_第6张图片
按需加载后体积小了一半,只剩下 321KB,查看官网的例子

你可能感兴趣的:(vue,vxe-table)