全局配置
Vexip UI 在初始化时可以提供一个配置项以改变一些组件行为,包括组件属性默认值、组件命名空间、国际化、组件内置图标等等。
默认属性#
Vexip UI 提供了以配置的形式改变属性默认值的能力。
设想一下,在一个有数百个表单控件的应用中,需求提出将所有的表单控件的大小从 'default' 改为 'large',你可能需要这样做:
<!-- a.vue -->
<template>
<Input size="large"></Input>
<Input size="large"></Input>
<Input size="large"></Input>
<Input size="large"></Input>
</template>
<!-- b.vue -->
<template>
<Select size="large"></Select>
<Select size="large"></Select>
<Select size="large"></Select>
<Select size="large"></Select>
</template>
<!-- c.vue -->
<template>
<Checkbox size="large"></Checkbox>
<Checkbox size="large"></Checkbox>
<Checkbox size="large"></Checkbox>
<Checkbox size="large"></Checkbox>
</template>
<!-- x?.vue -->
这将是一件非常枯燥且繁琐的工作。
此时,你只需要在 app.use 时在第二个参数传入一个对象,并指定 props 属性:
import { createApp } from 'vue'
import { install } from 'vexip-ui'
createApp(App)
.use(install, {
props: {
// 通过 default 可以修改全部组件的属性
// default: {
// size: 'large'
// },
input: {
size: 'large',
},
select: {
size: 'large',
},
checkbox: {
size: 'large',
},
},
})
.mount('#app')
设置完毕后,这些组件的 size 属性的默认值将修改为 'large'。
结合 ConfigProvider 组件的 props 属性,你还可以为局部的区域改变对应组件的默认值,详情请查阅 ConfigProvider 文档。
命名空间#
在 Vexip UI 中有两种命名空间的概念。
第一种是针对类名的命名空间配置,需要同时配合 sass 中的命名空间变量一起使用;第二种则是针对组件名的命名空间。
类名命名空间#
在调用 app.use 时通过在第二个参数传入 namespace 属性可以修改所有组件的类名前缀。
同时在引用样式时,你需要通过 sass 源码引入,并将 $namespace 变量设置为同样的值以保证样式的正常运作。
createApp(App).use(install, { namespace: 'vxp' })
// 在 scss 里你可以省略 index.scss
@use 'vexip-ui/style' with (
$namespace: 'vxp'
);
组件名命名空间#
在调用 app.use 时通过在第二个参数传入 prefix 属性可以为所有组件的组件名设置一个共同的前缀。
当与一些其他的组件一同使用时, 可能会发生命名冲突,使用该特性可以轻松地解决这个问题。
createApp(App).use(install, { prefix: 'V' })
配置后, 所有的组件在使用时名称将带有 V 前缀。
<template>
<VButton></VButton>
<VInput></VInput>
</template>
国际化#
Vexip UI 的默认语言为 'zh-CN',在调用 app.use 时通过在第二个参数传入 locale 选项可以为所有组件配置国际化。
import { enUSLocale, install } from 'vexip-ui'
app.use(install, {
locale: enUSLocale(),
})
动态切换语言时,你可以通过 registerLocale 方法注册并缓存一个语言包,随后通过修改 locale.locale 属性快速切换。
import { ref } from 'vue'
import { enUSLocale, install, registerLocale } from 'vexip-ui'
registerLocale(enUSLocale())
const vexipuiLocale = ref({
locale: 'zh-CN',
})
app.use(install, {
locale: vexipuiLocale,
})
// 切换时
vexipuiLocale.value.locale = 'en-US'
同时你还可以定制化一些组件的国际化:
app.use(install, {
locale: {
locale: 'zh-CN',
input: {
placeholder: '来写点东西',
},
},
})
结合 ConfigProvider 组件的 locale 属性,你还可以为局部的区域配置国际化,详情请查阅 ConfigProvider 文档。
如果你想配置其他的语言,你需要根据完整的配置项自行完成,详见 国际化。
完整的国际化选项可以浏览 此处。
内置图标#
一部分的组件中会包含图标内容,这些图标在组件的内部,使用者无法控制。
尽管其中的大部分都提供了属性或插槽以满足定制化,但如果你想批量替换某一种图标(比如:加载中图标)仍会是一项不愉快的工作。
因此 Vexip UI 提供了一种全局配置组件内置图标的方式。
在调用 app.use 时通过在第二个参数传入 icons 选项即可自定义所有的组件内置图标。
import { CircleXmark, Spinner, Xmark } from '@vexip-ui/icons'
app.use(install, {
icons: {
close: Xmark,
// 可以传入一个数组,并在第二个参数配置自定义参数
loading: [
Spinner,
{ effect: 'pulse-in' },
],
},
})
结合 ConfigProvider 组件的 icons 属性,你还可以为局部的区域自定义图标,详情请查阅 ConfigProvider 文档。
完整的内置图标选项可以浏览 此处。
所有的内置图标预览可以参考 修改图标 章节。
最后,我们来看一个实际的效果替换后的效果:
具体的代码可以浏览 此处。
完整配置#
| 名称 | 类型 | 说明 | 默认值 | 始于 |
|---|---|---|---|---|
| hoverDelay | number | 悬停延迟毫秒数 | 100 | 2.2.11 |
| icons | IconsOptions | 内部图标配置 | globalIcons | 2.1.9 |
| locale | LocaleOptions | 国际化配置 | zhCNLocale() | - |
| props | PropsOptions | 组件属性配置,键值为组件的驼峰命名,值为对应组件的属性配置,注入的属性将覆盖组件原有的属性默认值 | null | - |
| theme | 'base' | 'dark' | 主题名称,用于全局配置样式 | null | - |
| zIndex | number | 基础层级数 | 2000 | 2.1.17 |