统一修改多处UI组件的主色调,从蓝色(#1890ff)变更为紫色(#462AA0),以保持视觉一致性。同时优化了文件上传逻辑和滚动到底部功能。 refactor(dom): 提取滚动相关操作为工具函数 将滚动到底部逻辑封装为可复用的工具函数,并在多处调用位置进行替换,提高代码复用性。 fix(upload): 修复上传中文件点击打开问题 增加上传状态判断,避免在上传过程中点击文件时打开新窗口。 chore(deps): 更新依赖包版本 升级@types/node和watchpack等依赖包版本。 |
||
---|---|---|
.. | ||
x-address-select | ||
x-n-data-table | ||
x-n-modal | ||
x-n-upload | ||
x-preview-img | ||
x-search-form | ||
README.md |
@x-naive-ui 组件库
基于 Naive UI 的二次封装组件库,旨在提供更高层级的抽象和更便捷的使用方式,同时保持足够的灵活性。
@x-naive-ui 的设计理念是在易用性和灵活性之间找到平衡点,通过合理的默认值和可配置项,能够快速开发出高质量的页面,同时保留足够的扩展空间应对特殊需求。
如发现文档与实际使用有出入或者不完善 可提交修改
设计理念
1. 易用性与灵活性的平衡
- 约定优于配置:提供合理的默认值,减少基础使用时的配置量
- 保持原有能力:通过属性透传,保留 Naive UI 原组件的所有功能
- 渐进式配置:简单场景可以快速使用,复杂场景仍可深度定制
2. 通用性与特殊性的权衡
- 场景覆盖:优先覆盖 80% 的常见业务场景
- 扩展机制:为剩余 20% 的特殊场景预留扩展接口
3.避免过度封装:不追求完美覆盖所有场景,保持组件的可维护性。
组件列表
x-n-data-table
数据表格组件,增强了以下能力:
- ✨ 拖拽排序(支持整行/手柄模式)
- ✨ 列级别的插槽系统
- 🎯 统一的样式和交互
权衡点:
- 牺牲了一定的性能来换取更好的开发体验
- 固化了部分样式以确保视觉一致性
x-n-modal
模态框组件,预设了常用配置:
- ✨ 统一的挂载点管理
- ✨ 预设的关闭行为
- 🎯 居中布局和统一样式
权衡点:
- 限制了一些灵活性以确保使用的一致性
- 强制了某些最佳实践(如挂载点)
x-n-upload
文件上传组件,增强了以下功能:
- ✨ 统一的文件处理逻辑
- ✨ 内置预览能力
- 🎯 更友好的类型支持
权衡点:
- 上传接口格式固定,需要后端配合
- 为了通用性,部分特殊格式需要额外处理
x-search-form
搜索表单组件,提供了:
- ✨ 声明式配置
- ✨ 自动布局
- 🎯 统一的搜索重置行为
权衡点:
- 牺牲了一些布局灵活性换取使用便利性
- 配置项相对复杂,但换来了更好的复用性
最佳实践
1. 组件使用建议
<!-- 推荐:使用声明式配置 -->
<x-search-form
:search-config="searchConfig"
:cols="4"
@change="handleSearch"
/>
<!-- 不推荐:内联复杂配置 -->
<x-search-form
:search-config="[
{ type: 'input', key: 'name', label: '姓名' },
{ type: 'select', key: 'status', label: '状态' }
]"
/>
2. 配置管理建议
// 推荐:将配置抽离到单独的配置文件
import { searchConfig } from './config'
import { tableConfig } from './config'
// 不推荐:在组件内部直接定义<E5AE9A><E4B989><EFBFBD>杂配置
const searchConfig = [
// ... 大量配置
]
注意事项
-
性能考虑
- 大数据量场景下,优先使用原生组件
- 合理使用
shallowRef
和markRaw
- 避免不必要的响应式转换
-
扩展性保证
- 使用
v-bind
透传原组件属性 - 预留合理的插槽接口
- 导出必要的类型定义
- 使用
-
代码质量
- 统一的错误处理机制
- 完善的类型声明
- 详细的文档注释
未来规划
-
组件增强
- 添加更多常用预设
- 优化性能表现
- 增加更多定制选项
-
文档完善
- 补充更多使用示例
- 添加在线演示
- 完善类型声明
-
工具支持
- 提供配置生成器
- 添加主题定制能力
- 集成表单验证工具
贡献指南
-
组件开发原则
- 保持简单性
- 关注通用性
- 预留扩展性
-
代码规范
- 遵循项目 ESLint 配置
- 编写单元测试
- 提供完整文档