Files
vxe-table/examples/views/start/Use.vue
2024-04-15 15:30:24 +08:00

265 lines
7.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<h2>{{ $t('app.aside.nav.use') }}</h2>
<p class="tip">
方式1如果您使用了 vite借助插件 <a class="link" href="https://www.npmjs.com/package/vite-plugin-style-import" target="_blank">vite-plugin-style-import</a> 可以实现按需加载模块减少文件体积
</p>
<pre>
<pre-code class="shell">
npm install vite-plugin-style-import -D
</pre-code>
<div>修改文件 vite.config.ts</div>
<pre-code class="typescript">
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import styleImport from 'vite-plugin-style-import'
export default defineConfig({
plugins: [
// ...,
styleImport({
libs: [
{
libraryName: 'vxe-table',
esModule: true,
resolveComponent: (name) => `vxe-table/es/${name}`,
resolveStyle: (name) => `vxe-table/es/${name}/style.css`
}
]
})
]
})
</pre-code>
<div>最后这样按需引入模块就可以减小体积了</div>
<pre-code class="typescript">
import { App, createApp } = 'vue'
import 'xe-utils'
import {
// 实例对象
VXETable,
// 表格功能
// VxeTableFilterModule,
// VxeTableEditModule,
// VxeTableMenuModule,
// VxeTableExportModule,
// VxeTableKeyboardModule,
// VxeTableValidatorModule,
// 可选组件
VxeIcon,
VxeColumn,
// VxeColgroup,
// VxeGrid,
// VxeTooltip,
// VxeToolbar,
// VxePager,
// VxeForm,
// VxeFormItem,
// VxeFormGather,
// VxeCheckbox,
// VxeCheckboxGroup,
// VxeRadio,
// VxeRadioGroup,
// VxeRadioButton,
// VxeSwitch,
// VxeInput,
// VxeSelect,
// VxeOptgroup,
// VxeOption,
// VxeTextarea,
// VxeButton,
// VxeModal,
// VxeList,
// VxePulldown,
// 表格
VxeTable
} from 'vxe-table'
import zhCN from 'vxe-table/es/locale/lang/zh-CN'
// 按需加载的方式默认是不带国际化的,自定义国际化需要自行解析占位符 '{0}',例如:
VXETable.setup({
i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args)
})
function useTable (app: App) {
// 表格功能
app.use(VxeTableFilterModule)
// .use(VxeTableEditModule)
// .use(VxeTableMenuModule)
// .use(VxeTableExportModule)
// .use(VxeTableKeyboardModule)
// .use(VxeTableValidatorModule)
// 可选组件
.use(VxeIcon)
.use(VxeColumn)
// .use(VxeColgroup)
// .use(VxeGrid)
// .use(VxeTooltip)
// .use(VxeToolbar)
// .use(VxePager)
// .use(VxeForm)
// .use(VxeFormItem)
// .use(VxeFormGather)
// .use(VxeCheckbox)
// .use(VxeCheckboxGroup)
// .use(VxeRadio)
// .use(VxeRadioGroup)
// .use(VxeRadioButton)
// .use(VxeSwitch)
// .use(VxeInput)
// .use(VxeSelect)
// .use(VxeOptgroup)
// .use(VxeOption)
// .use(VxeTextarea)
// .use(VxeButton)
// .use(VxeModal)
// .use(VxeList)
// .use(VxePulldown)
// 安装表格
.use(VxeTable)
// 给 vue 实例挂载内部对象,例如:
// app.config.globalProperties.$XModal = VXETable.modal
// app.config.globalProperties.$XPrint = VXETable.print
// app.config.globalProperties.$XSaveFile = VXETable.saveFile
// app.config.globalProperties.$XReadFile = VXETable.readFile
}
createApp(App).use(useTable).mount('#app')
</pre-code>
</pre>
<p class="tip">
方式2如果您使用了 babel借助插件 <a class="link" href="https://www.npmjs.com/package/babel-plugin-import" target="_blank">babel-plugin-import</a> 可以实现按需加载模块减少文件体积
</p>
<pre>
<pre-code class="shell">
npm install babel-plugin-import -D
</pre-code>
<div>修改文件 .babelrc babel.config.js</div>
<pre-code class="typescript">
{
"plugins": [
[
"import",
{
"libraryName": "vxe-table",
"style": true // 样式是否也按需加载
}
]
]
}
</pre-code>
<div>最后这样按需引入模块就可以减小体积了</div>
<pre-code class="typescript">
import { App, createApp } = 'vue'
import 'xe-utils'
import {
// 核心
VXETable,
// 表格功能
Header,
// Footer,
// Icon,
// Filter,
// Edit,
// Menu,
// Export,
// Keyboard,
// Validator,
// 可选组件
Column,
// Colgroup,
// Grid,
// Tooltip,
// Toolbar,
// Pager,
// Form,
// FormItem,
// FormGather,
// Checkbox,
// CheckboxGroup,
// Radio,
// RadioGroup,
// RadioButton,
// Switch,
// Input,
// Select,
// Optgroup,
// Option,
// Textarea,
// Button,
// Modal,
// List,
// Pulldown,
// 表格
Table
} from 'vxe-table'
import zhCN from 'vxe-table/lib/locale/lang/zh-CN'
// 按需加载的方式默认是不带国际化的,自定义国际化需要自行解析占位符 '{0}',例如:
VXETable.setup({
i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args)
})
function useTable (app: App) {
// 表格功能
app.use(Header)
// .use(Footer)
// .use(Icon)
// .use(Filter)
// .use(Edit)
// .use(Menu)
// .use(Export)
// .use(Keyboard)
// .use(Validator)
// 可选组件
.use(Column)
// .use(Colgroup)
// .use(Grid)
// .use(Tooltip)
// .use(Toolbar)
// .use(Pager)
// .use(Form)
// .use(FormItem)
// .use(FormGather)
// .use(Checkbox)
// .use(CheckboxGroup)
// .use(Radio)
// .use(RadioGroup)
// .use(RadioButton)
// .use(Switch)
// .use(Input)
// .use(Select)
// .use(Optgroup)
// .use(Option)
// .use(Textarea)
// .use(Button)
// .use(Modal)
// .use(List)
// .use(Pulldown)
// 安装表格
.use(Table)
// 给 vue 实例挂载内部对象,例如:
// app.config.globalProperties.$XModal = VXETable.modal
// app.config.globalProperties.$XPrint = VXETable.print
// app.config.globalProperties.$XSaveFile = VXETable.saveFile
// app.config.globalProperties.$XReadFile = VXETable.readFile
}
createApp(App).use(useTable).mount('#app')
</pre-code>
</pre>
</div>
</template>