组件总览
DVHA Pro 提供了丰富的组件库,涵盖了中后台系统开发的各个方面。组件库分为基础组件和业务组件两大类,所有组件都基于现代化的设计理念,提供了优秀的用户体验和开发体验。
组件体系
基础组件
DVHA Pro 直接使用 Naive UI 作为基础组件库,提供了完整的基础 UI 组件:
通用组件
- NButton - 按钮组件,支持多种类型和尺寸
- NIcon - 图标组件,集成 Tabler Icons
- NText - 文本组件,提供语义化文本样式
- NEl - 通用元素组件
布局组件
- NLayout - 布局容器
- NLayoutHeader/NLayoutSider/NLayoutContent/NLayoutFooter - 布局区域
- NGrid/NGridItem - 栅格系统
- NSpace - 间距组件
- NDivider - 分割线
导航组件
- NMenu - 菜单组件
- NBreadcrumb - 面包屑导航
- NTabs - 标签页
- NPagination - 分页组件
- NSteps - 步骤条
数据录入组件
- NInput - 输入框
- NSelect - 选择器
- NCheckbox/NCheckboxGroup - 复选框
- NRadio/NRadioGroup - 单选框
- NSwitch - 开关
- NSlider - 滑动条
- NRate - 评分
- NDatePicker - 日期选择器
- NTimePicker - 时间选择器
- NUpload - 基础上传组件
数据展示组件
- NTable - 基础表格
- NList - 基础列表
- NCard - 基础卡片
- NDescriptions - 描述列表
- NStatistic - 统计数值
- NTag - 标签
- NBadge - 徽标
- NAvatar - 头像
- NImage - 图片
- NCarousel - 基础轮播
反馈组件
- NAlert - 警告提示
- NMessage - 全局提示
- NNotification - 通知提醒
- NModal - 基础模态框
- NDrawer - 基础抽屉
- NPopover - 气泡卡片
- NTooltip - 文字提示
- NProgress - 进度条
- NSpin - 加载中
- NSkeleton - 骨架屏
业务组件
DVHA Pro 在基础组件之上,提供了专为中后台系统设计的业务组件:
布局组件
- DuxCard - 通用卡片容器,支持头部、内容、底部区域配置
- DuxListLayout - 列表布局组件,提供筛选、工具栏、分页等功能
- DuxTableLayout - 表格布局组件,集成查询、操作、分页等功能
表单组件
- DuxFormLayout - 表单布局组件,支持 JSON Schema 动态渲染
- DuxFormItem - 表单项组件,提供统一的表单项样式
- DuxTableFilter - 表格筛选组件,快速构建筛选表单
数据展示组件
- DuxTablePage - 完整的表格页面组件,开箱即用
- DuxListPage - 传统列表页面组件,支持垂直布局
- DuxCardPage - 卡片网格页面组件,支持响应式布局
- DuxChart - 图表组件,基于 ECharts,支持多种图表类型
- DuxStatsNumber - 数字统计组件
- DuxStatsRealTime - 实时统计组件
- DuxMedia - 媒体展示组件,支持图片、头像、标题组合
反馈组件
- DuxModal - 增强模态框组件
- DuxModalPage - 模态框页面组件
- DuxModalTab - 模态框标签页组件
- DuxDrawerPage - 抽屉页面组件
- DuxBlockEmpty - 空状态组件
数据录入组件
- DuxImageUpload - 图片上传组件,支持预览、管理
- DuxFileUpload - 文件上传组件,支持多种文件类型
- DuxFileManage - 文件管理组件,提供文件浏览和选择
- DuxAiEditor - AI 增强编辑器,支持智能写作
- DuxImageCrop - 图片裁剪组件,支持多种裁剪模式
- DuxSelectCard - 卡片选择组件,提供可视化选择
- DuxLevel - 层级选择组件,支持省市区等多级联动
- DuxDynamicData - 动态数据组件
- DuxDynamicSelect - 动态选择组件
导航组件
- DuxCarousel - 轮播组件,支持图片轮播和点击事件
面板组件
- DuxPanelAlert - 警告面板组件
- DuxPanelCard - 卡片面板组件
仪表盘组件
- DuxDashboardHello - 欢迎横幅组件
- DuxDashboardHelloBig - 大型欢迎横幅组件
- DuxDashboardQuick - 快捷功能组件
小部件组件
- DuxAvatar - 增强头像组件,支持占位符
- DuxImage - 增强图片组件,支持占位符和错误处理
- DuxConnect - 连接状态组件
使用说明
基础组件使用
基础组件直接使用 Naive UI 组件,无需额外导入:
vue
<script setup>
// 直接使用 Naive UI 组件
</script>
<template>
<NButton type="primary">
按钮
</NButton>
<NInput placeholder="请输入内容" />
<NSelect :options="options" />
<NTable :data="tableData" />
</template>
业务组件使用
业务组件需要从 @duxweb/dvha-pro
导入:
vue
<script setup>
import {
DuxCard,
DuxTablePage
} from '@duxweb/dvha-pro'
</script>
<template>
<DuxCard title="用户管理">
<DuxTablePage path="/api/users" />
</DuxCard>
</template>
全局注册
所有业务组件在安装 DVHA Pro 时已全局注册,可直接在模板中使用:
vue
<template>
<!-- 无需导入,直接使用 -->
<DuxTablePage path="/api/users" />
<DuxFormLayout :schema="formSchema" />
</template>
设计原则
一致性
- 视觉一致性 - 统一的设计语言和视觉风格
- 交互一致性 - 相同的交互模式和操作逻辑
- 代码一致性 - 统一的 API 设计和命名规范
可用性
- 易用性 - 简单直观的 API 设计
- 可访问性 - 支持键盘导航和屏幕阅读器
- 响应式 - 适配各种屏幕尺寸和设备
可扩展性
- 组合式设计 - 组件可以灵活组合使用
- 插槽支持 - 提供丰富的插槽用于自定义
- 主题定制 - 支持深度的主题定制
性能
- 按需加载 - 支持组件的按需导入
- 虚拟滚动 - 大数据量场景的性能优化
- 缓存优化 - 智能的数据缓存机制
开发指南
TypeScript 支持
所有组件都提供了完整的 TypeScript 类型定义:
typescript
import type { DuxTablePageProps, DuxFormLayoutProps } from '@duxweb/dvha-pro'
// 组件属性类型
const tableProps: DuxTablePageProps = {
path: '/api/users',
columns: [...]
}
// 事件回调类型
const handleSubmit = (data: FormData) => {
// 类型安全的表单数据处理
}
主题定制
组件支持通过 CSS 变量进行主题定制:
css
:root {
--ui-color-primary: 59 130 246;
--ui-border-radius: 6px;
--ui-spacing-unit: 4px;
}
国际化支持
组件内置国际化支持,可配置多语言:
typescript
import { useI18n } from '@duxweb/dvha'
const { t } = useI18n()
// 组件会自动使用配置的语言
最佳实践
组件选择
- 优先使用业务组件 - 业务组件提供了更丰富的功能和更好的用户体验
- 基础组件补充 - 在业务组件无法满足需求时使用基础组件
- 组合使用 - 通过组合不同组件实现复杂的业务需求
性能优化
- 按需导入 - 只导入需要的组件
- 合理使用缓存 - 利用组件内置的缓存机制
- 避免过度渲染 - 合理使用
v-memo
和v-once
代码组织
- 组件拆分 - 将复杂组件拆分为多个小组件
- 逻辑复用 - 使用 Composition API 抽取可复用逻辑
- 类型安全 - 充分利用 TypeScript 的类型检查
贡献指南
欢迎贡献代码和提出建议,请参考 贡献指南 了解详细信息。