# xux
**Repository Path**: doublecc/xux
## Basic Information
- **Project Name**: xux
- **Description**: xux是解决电商网站的基本UI设计组件,高效率,简洁。完全适配NUXT服务端渲染 及适配移动端 完全契合Uniapp
- **Primary Language**: JavaScript
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/leheya/xux
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2025-11-19
- **Last Updated**: 2025-11-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 快速开始
本指南将帮助您快速上手 XUX-UI 组件库,从安装到使用,让您在几分钟内就能开始构建现代化的电商应用。
在线文档:[https://xux.xlcig.cn](https://xux.xlcig.cn)
## 📌 版本说明
当前版本:**1.3.22**
::: tip 重要提示
- ✅ 推荐使用最新版本,旧版本可能存在 Bug 和样式问题
- ✅ 完整支持 Vue 3 项目和 UniApp 项目
- ✅ 部分复杂组件基于 Element Plus 的 `ElPopover` 优化性能
- ✅ 问题反馈:18569795073@163.com
:::
### 版本检查
查看当前已安装版本:
::: code-group
```bash [pnpm]
pnpm list @xlui/xux-ui
```
```bash [npm]
npm list @xlui/xux-ui
```
:::
### 版本更新
如果已安装旧版本,使用以下命令更新:
::: code-group
```bash [pnpm]
pnpm update @xlui/xux-ui
```
```bash [npm]
npm update @xlui/xux-ui
```
```bash [yarn]
yarn upgrade @xlui/xux-ui
```
:::
## 📦 安装
### 使用包管理器安装
::: code-group
```bash [pnpm]
pnpm add @xlui/xux-ui
```
```bash [npm]
npm install @xlui/xux-ui
```
```bash [yarn]
yarn add @xlui/xux-ui
```
:::
::: tip 提示
推荐使用 pnpm 作为包管理器,它更快且更节省磁盘空间。
:::
## 🚀 基础使用
### 按需引入(推荐)
在 Vue 3 项目中按需导入组件:
```vue
主要按钮
成功按钮
警告按钮
危险按钮
```
### 多个组件引入
```vue
提交
```
### 引入样式
组件样式已内置,但推荐在项目入口引入完整样式以获得更好的主题支持:
```ts
// main.ts
import '@xlui/xux-ui/dist/index.css'
```
::: tip 主题定制
XUX-UI 支持完整的主题定制和深色/浅色模式切换。
📖 查看 [主题化配置](/components/theme-config) 了解详细的主题定制方案。
:::
## 🔧 Vue 3 项目配置
### 方式一:全局注册所有组件
如果不想每次都引入组件,可以在项目入口文件中全局注册所有组件:
::: code-group
```ts [main.ts]
// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import * as XUXComponents from '@xlui/xux-ui'
import '@xlui/xux-ui/dist/index.css'
const app = createApp(App)
// 全局注册所有组件
Object.entries(XUXComponents).forEach(([name, component]) => {
if (name.startsWith('X')) {
app.component(name, component)
}
})
app.mount('#app')
```
```js [main.js]
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import * as XUXComponents from '@xlui/xux-ui'
import '@xlui/xux-ui/dist/index.css'
const app = createApp(App)
// 全局注册所有组件
Object.entries(XUXComponents).forEach(([name, component]) => {
if (name.startsWith('X')) {
app.component(name, component)
}
})
app.mount('#app')
```
:::
### 方式二:全局注册常用组件
::: code-group
```ts [main.ts]
// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import { XButton, XCard, XInput, XModal, XBadge, XSelect } from '@xlui/xux-ui'
import '@xlui/xux-ui/dist/index.css'
const app = createApp(App)
// 只注册常用组件
app.component('XButton', XButton)
app.component('XCard', XCard)
app.component('XInput', XInput)
app.component('XModal', XModal)
app.component('XBadge', XBadge)
app.component('XSelect', XSelect)
app.mount('#app')
```
```js [main.js]
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import { XButton, XCard, XInput, XModal, XBadge, XSelect } from '@xlui/xux-ui'
import '@xlui/xux-ui/dist/index.css'
const app = createApp(App)
// 只注册常用组件
app.component('XButton', XButton)
app.component('XCard', XCard)
app.component('XInput', XInput)
app.component('XModal', XModal)
app.component('XBadge', XBadge)
app.component('XSelect', XSelect)
app.mount('#app')
```
:::
### 使用全局组件
注册后即可直接在模板中使用,无需导入:
```vue
按钮
```
::: tip 建议
推荐使用**按需引入**而不是全局注册,这样可以:
- 减小打包体积(Tree Shaking)
- 更清晰的依赖关系
- 更好的 TypeScript 类型提示
:::
### 方式三:自动导入(推荐!最佳实践)
使用 `unplugin-vue-components` 实现自动按需导入:
**1. 安装依赖**
::: code-group
```bash [pnpm]
pnpm add -D unplugin-vue-components
```
```bash [npm]
npm install -D unplugin-vue-components
```
```bash [yarn]
yarn add -D unplugin-vue-components
```
:::
**2. 配置 vite.config.ts**
::: code-group
```ts [vite.config.ts]
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
export default defineConfig({
plugins: [
vue(),
Components({
resolvers: [
// 自定义解析器,自动导入 XUX 组件
(componentName) => {
if (componentName.startsWith('X')) {
return {
name: componentName,
from: '@xlui/xux-ui'
}
}
}
],
dts: true // 自动生成类型声明文件
})
]
})
```
```js [vite.config.js]
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
export default defineConfig({
plugins: [
vue(),
Components({
resolvers: [
// 自定义解析器,自动导入 XUX 组件
(componentName) => {
if (componentName.startsWith('X')) {
return {
name: componentName,
from: '@xlui/xux-ui'
}
}
}
],
dts: true // 自动生成类型声明文件
})
]
})
```
:::
**3. 在项目入口文件中引入样式**
::: code-group
```ts [main.ts]
import { createApp } from 'vue'
import App from './App.vue'
import '@xlui/xux-ui/dist/index.css'
createApp(App).mount('#app')
```
```js [main.js]
import { createApp } from 'vue'
import App from './App.vue'
import '@xlui/xux-ui/dist/index.css'
createApp(App).mount('#app')
```
:::
**4. 直接使用(无需导入)**
```vue
按钮
```
::: tip 最佳实践
**推荐使用自动导入方式**,它结合了便利性和性能优势:
- ✅ 无需手动导入,开发体验最佳
- ✅ 按需打包,体积最小(Tree Shaking)
- ✅ 自动生成 TypeScript 类型声明
- ✅ 更清晰的依赖关系
:::
## 🚢 Nuxt 4 项目配置
XUX 完美支持 Nuxt 4,提供三种配置方式:
### 方式一:Nuxt 插件全局注册
**1. 创建插件文件 `plugins/xux-ui.ts`**
```ts
// plugins/xux-ui.ts
import * as XUXComponents from '@xlui/xux-ui'
import '@xlui/xux-ui/dist/index.css'
export default defineNuxtPlugin((nuxtApp) => {
// 全局注册所有组件
Object.entries(XUXComponents).forEach(([name, component]) => {
if (name.startsWith('X')) {
nuxtApp.vueApp.component(name, component as any)
}
})
})
```
**2. 直接使用**
```vue
主要按钮
通知
```
### 方式二:按需引入
**1. 配置 `nuxt.config.ts`**
```ts
// nuxt.config.ts
export default defineNuxtConfig({
css: [
'@xlui/xux-ui/dist/index.css'
],
typescript: {
strict: true
}
})
```
**2. 在组件中按需导入**
```vue
主要按钮
通知
```
### 方式三:自动导入(推荐!)
**1. 安装依赖**
```bash
pnpm add -D unplugin-vue-components
```
**2. 配置 `nuxt.config.ts`**
```ts
// nuxt.config.ts
import Components from 'unplugin-vue-components/vite'
export default defineNuxtConfig({
css: [
'@xlui/xux-ui/dist/index.css'
],
vite: {
plugins: [
Components({
resolvers: [
// 自定义解析器,自动导入 XUX 组件
(componentName) => {
if (componentName.startsWith('X')) {
return {
name: componentName,
from: '@xlui/xux-ui'
}
}
}
],
dts: true // 自动生成类型声明文件
})
]
},
typescript: {
strict: true,
typeCheck: true
}
})
```
**3. 直接使用(自动导入)**
```vue
```
### Nuxt SSR 注意事项
Nuxt 默认启用 SSR(服务端渲染),大部分组件都能正常工作。但如果遇到某些组件在服务端报错(如使用了 `window`、`document` 等浏览器 API),可以使用 `` 包裹:
```vue
按钮
```
::: tip 推荐配置
**Nuxt 4 推荐使用方式三(自动导入)**,它结合了便利性和性能优势:
- ✅ 无需手动导入,开发体验最佳
- ✅ 自动按需加载,打包体积小
- ✅ 完美支持 SSR
- ✅ 自动生成 TypeScript 类型
:::
## 🎨 使用工具函数
XUX 提供了一些实用工具函数,需要手动导入使用:
### 消息提示
```vue
```
### 对话框
```vue
```
### 日期时间工具
```vue
```
## 🎯 完整示例
这是一个完整的电商商品卡片示例:
```vue
```
## 📚 组件列表
XUX 提供了丰富的组件,涵盖电商场景的各种需求:
### 基础组件
- [Button 按钮](/components/button) - 常用的操作按钮
- [Card 卡片](/components/card) - 信息展示卡片
- [Input 输入框](/components/input) - 表单输入组件
### 表单组件
- [Select 选择器](/components/select) - 下拉选择
- [Checkboxes 多选框](/components/checkboxes) - 多项选择
- [CountrySelect 国家选择](/components/country-select) - 国家/地区选择
### 展示组件
- [Accordion 手风琴](/components/accordion) - 折叠面板
- [Modal 弹窗](/components/modal) - 对话框
- [Skeleton 骨架屏](/components/skeleton) - 加载占位
- [ThumbnailContainer 缩略图容器](/components/thumbnail-container) - 图片展示
### 反馈组件
- [Msg 消息提示](/components/msg) - 全局提示
## 🔗 相关链接
- [Gitee 仓库](https://gitee.com/leheya/xux)
- [组件文档](/components/button)
- [安装指南](/guide/installation)
## ❓ 常见问题
### 为什么组件没有显示?
1. 确认已正确安装依赖
2. 检查导入路径是否正确
3. 确保 Vue 版本 >= 3.3.0
### 如何自定义组件样式?
所有组件都支持传入 `class` 和 `style` 属性,您可以:
```vue
自定义按钮
```
或者使用 CSS 变量覆盖主题:
```css
.custom-button {
--x-color-primary: #ff6b6b;
}
```
### TypeScript 支持
XUX 完全支持 TypeScript,所有组件都有完整的类型定义:
```vue
```
## 💡 下一步
- 浏览[组件文档](/components/button)了解更多组件用法
- 查看上面的[主题定制](#主题定制)章节学习如何自定义主题
- 访问 [Gitee 仓库](https://gitee.com/leheya/xux)反馈问题和建议
开始使用 XUX,打造您的电商应用!🎉