vxe-table
vxe-table copied to clipboard
vite按需加载 方式更新
这个需求解决了什么问题:
增加 unplugin-vue-components 的 Resolver ,替换掉vite-plugin-style-import ;
缺点: vite-plugin-style-import 现在有 bug ,而且很长时间没修复了;
优点: unplugin-vue-components 官方支持更好,维护更好
建议的 API 是什么样的:
No response
是否已有其他不错的替代方案:
No response
这么久都没有人处理吗, 都两个月了
这么久都没有人处理吗, 都两个月了
最新版,按需加载还是不可用的状态。😓
vite-plugin-style-import 样式加载了很多次。
@hxzAugustinus 1 创建vxeResolver.ts
import type { ComponentResolver, SideEffectsInfo } from "unplugin-vue-components"
import { kebabCase } from "unplugin-vue-components"
const getSideEffects = (name: string): SideEffectsInfo => {
return `vxe-table/es/${name}/style.css`
}
export default (): ComponentResolver => {
return {
type: "component",
resolve: (name) => {
if (/^Vxe/.test(name)) {
const compName = name.slice(3)
const partialName = kebabCase(compName)
return {
from: `vxe-table/es/${partialName}`,
sideEffects: getSideEffects(partialName),
}
}
},
}
}
2 配置vite.config.ts
import Components from "unplugin-vue-components/vite"
import { defineConfig } from "vite"
export default defineConfig({
plugins: [
Components({
resolvers: [VxetableResolver()],
dts: true,
}),
]
})
3 main.ts
// 配置中文
import { VXETable } from "vxe-table"
import zhCN from "vxe-table/es/locale/lang/zh-CN"
import XEUtils from "xe-utils"
VXETable.setup({
i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args),
})
@hxzAugustinus 1 创建vxeResolver.ts
import type { ComponentResolver, SideEffectsInfo } from "unplugin-vue-components" import { kebabCase } from "unplugin-vue-components" const getSideEffects = (name: string): SideEffectsInfo => { return `vxe-table/es/${name}/style.css` } export default (): ComponentResolver => { return { type: "component", resolve: (name) => { if (/^Vxe/.test(name)) { const compName = name.slice(3) const partialName = kebabCase(compName) return { from: `vxe-table/es/${partialName}`, sideEffects: getSideEffects(partialName), } } }, } }2 配置vite.config.ts
import Components from "unplugin-vue-components/vite" import { defineConfig } from "vite" export default defineConfig({ plugins: [ Components({ resolvers: [VxetableResolver()], dts: true, }), ] })3 main.ts
// 配置中文 import { VXETable } from "vxe-table" import zhCN from "vxe-table/es/locale/lang/zh-CN" import XEUtils from "xe-utils" VXETable.setup({ i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args), })
checkbox css不显示 这么引用
@hxzAugustinus 1 创建vxeResolver.ts
import type { ComponentResolver, SideEffectsInfo } from "unplugin-vue-components" import { kebabCase } from "unplugin-vue-components" const getSideEffects = (name: string): SideEffectsInfo => { return `vxe-table/es/${name}/style.css` } export default (): ComponentResolver => { return { type: "component", resolve: (name) => { if (/^Vxe/.test(name)) { const compName = name.slice(3) const partialName = kebabCase(compName) return { from: `vxe-table/es/${partialName}`, sideEffects: getSideEffects(partialName), } } }, } }2 配置vite.config.ts
import Components from "unplugin-vue-components/vite" import { defineConfig } from "vite" export default defineConfig({ plugins: [ Components({ resolvers: [VxetableResolver()], dts: true, }), ] })3 main.ts
// 配置中文 import { VXETable } from "vxe-table" import zhCN from "vxe-table/es/locale/lang/zh-CN" import XEUtils from "xe-utils" VXETable.setup({ i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args), })checkbox css不显示 这么引用
import "vxe-table/es/icon/style.css"
main.js中加入这个
右键菜单怎么添加 提示找不到 Failed to resolve component: vxe-table-context-menu @moliyu
目前找到的办法就是 手动导入 import { VXETable, Menu } from 'vxe-table'; app.use(router).use(store).use(Menu); 这样可以解决问题
缩略提示 添加css import 'vxe-table/es/tooltip/style.css';
代码里按说应该自动引入的
@hxzAugustinus 1 创建vxeResolver.ts
import type { ComponentResolver, SideEffectsInfo } from "unplugin-vue-components" import { kebabCase } from "unplugin-vue-components" const getSideEffects = (name: string): SideEffectsInfo => { return `vxe-table/es/${name}/style.css` } export default (): ComponentResolver => { return { type: "component", resolve: (name) => { if (/^Vxe/.test(name)) { const compName = name.slice(3) const partialName = kebabCase(compName) return { from: `vxe-table/es/${partialName}`, sideEffects: getSideEffects(partialName), } } }, } }2 配置vite.config.ts
import Components from "unplugin-vue-components/vite" import { defineConfig } from "vite" export default defineConfig({ plugins: [ Components({ resolvers: [VxetableResolver()], dts: true, }), ] })3 main.ts
// 配置中文 import { VXETable } from "vxe-table" import zhCN from "vxe-table/es/locale/lang/zh-CN" import XEUtils from "xe-utils" VXETable.setup({ i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args), })
大佬,提个 pullRequest 给 unplugin-vue-components
这么引用组件里调用的组件根本没法使用,要独立使用> > @hxzAugustinus 1 创建vxeResolver.ts
import type { ComponentResolver, SideEffectsInfo } from "unplugin-vue-components"
import { kebabCase } from "unplugin-vue-components"
const getSideEffects = (name: string): SideEffectsInfo => {
return
vxe-table/es/${name}/style.css}
export default (): ComponentResolver => {
return {
type: "component",resolve: (name) => {if (/^Vxe/.test(name)) {const compName = name.slice(3)const partialName = kebabCase(compName)return {from: `vxe-table/es/${partialName}`,sideEffects: getSideEffects(partialName),}}},}
}
2 配置vite.config.ts
import Components from "unplugin-vue-components/vite"
import { defineConfig } from "vite"
export default defineConfig({
plugins: [
Components({resolvers: [VxetableResolver()],dts: true,}),]
})
3 main.ts
// 配置中文
import { VXETable } from "vxe-table"
import zhCN from "vxe-table/es/locale/lang/zh-CN"
import XEUtils from "xe-utils"
VXETable.setup({
i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args),
})
大佬,提个 pullRequest 给
unplugin-vue-components
太惨了
@hxzAugustinus 1 创建vxeResolver.ts
import type { ComponentResolver, SideEffectsInfo } from "unplugin-vue-components" import { kebabCase } from "unplugin-vue-components" const getSideEffects = (name: string): SideEffectsInfo => { return `vxe-table/es/${name}/style.css` } export default (): ComponentResolver => { return { type: "component", resolve: (name) => { if (/^Vxe/.test(name)) { const compName = name.slice(3) const partialName = kebabCase(compName) return { from: `vxe-table/es/${partialName}`, sideEffects: getSideEffects(partialName), } } }, } }2 配置vite.config.ts
import Components from "unplugin-vue-components/vite" import { defineConfig } from "vite" export default defineConfig({ plugins: [ Components({ resolvers: [VxetableResolver()], dts: true, }), ] })3 main.ts
// 配置中文 import { VXETable } from "vxe-table" import zhCN from "vxe-table/es/locale/lang/zh-CN" import XEUtils from "xe-utils" VXETable.setup({ i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args), })
@moliyu 试了下,不写下面这句是按需加载的效果
import { VXETable } from 'vxe-table'
一旦写了这句,又变成全量加载了
@hxzAugustinus 1 创建vxeResolver.ts
import type { ComponentResolver, SideEffectsInfo } from "unplugin-vue-components" import { kebabCase } from "unplugin-vue-components" const getSideEffects = (name: string): SideEffectsInfo => { return `vxe-table/es/${name}/style.css` } export default (): ComponentResolver => { return { type: "component", resolve: (name) => { if (/^Vxe/.test(name)) { const compName = name.slice(3) const partialName = kebabCase(compName) return { from: `vxe-table/es/${partialName}`, sideEffects: getSideEffects(partialName), } } }, } }2 配置vite.config.ts
import Components from "unplugin-vue-components/vite" import { defineConfig } from "vite" export default defineConfig({ plugins: [ Components({ resolvers: [VxetableResolver()], dts: true, }), ] })3 main.ts
// 配置中文 import { VXETable } from "vxe-table" import zhCN from "vxe-table/es/locale/lang/zh-CN" import XEUtils from "xe-utils" VXETable.setup({ i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args), })@moliyu 试了下,不写下面这句是按需加载的效果
import { VXETable } from 'vxe-table'一旦写了这句,又变成全量加载了
没办法,不然没法设置中文,这个得要作者支持
分包加载,样式也有问题,不能点击右键,序号国际化失败。。icon 还有时候会乱码
分包加载,样式也有问题,不能点击右键,序号国际化失败。。icon 还有时候会乱码
唉,没法说
按需加载按需加载按照文档配置就行了 #2140
按照新的按需加载配置,排序不显示两个三角图标,看样式是没有加载成功,而且一直提示缺少必要的 "column-config.useKey",包括行也是,已经关闭虚拟滚动了 @xuliangzhan
这种写法解决不了内置组件引用的问题
4.6.0 还是不行
何解?