以下是针对 TypeDom UI 组件库 GitHub 仓库 的详细说明和使用指南:
核心目标 :
基于 TypeDom 框架 开发的 UI 组件库,对标 Element Plus ,提供丰富的前端组件。
适用于 TypeScript + 面向对象开发 的企业级项目,支持模块化、可复用的组件设计。
适用场景 :
需要强类型约束的复杂管理系统、企业级应用、跨平台组件复用等场景。
技术栈 :
TypeDom 框架 :基于 TypeScript 的 OOP 前端框架。
Webpack :模块打包工具。
TypeScript :强类型语言保障代码健壮性。
组件分类 :
基础组件 (如按钮、布局、图标)、数据组件 (表格、树形控件)、表单组件 (输入框、选择器)、反馈组件 (弹窗、加载)、导航组件 (菜单、分页)等。
模块化设计 :
支持按需引入组件,减少打包体积。
提供主题定制能力(通过 theme-chalk 目录)。
npm install @type-dom/ui
# 或使用 pnpm/yarn
依赖要求 :
已安装 type-dom/framework(TypeDom 核心框架)。
项目需支持 TypeScript 和 Webpack 构建流程。
src/
├── components/ # 所有 UI 组件
│ ├── basic/ # 基础组件(按钮、布局、图标等)
│ ├── data/ # 数据展示组件(表格、树形控件等)
│ ├── feedback/ # 反馈组件(弹窗、加载等)
│ ├── form/ # 表单组件(输入框、选择器等)
│ ├── navigation/ # 导航组件(菜单、分页等)
│ └── other/ # 其他组件(分割线、水印等)
├── constants/ # 常量定义(如主题配置)
├── hooks/ # 自定义 Hook(状态管理相关)
├── locale/ # 多语言支持
├── styles/ # 样式文件
├── theme-chalk/ # 主题定制(SCSS 变量)
├── utils/ # 工具函数
├── index.ts # 入口文件(导出所有组件)
└── test/ # 单元测试
import { TypeDiv } from '@type-dom/framework' ;
import { TdButton } from '@type-dom/ui' ;
class MyPage extends TypeDiv {
constructor ( ) {
super ( ) ;
this . className = 'MyPage' ;
this . addChild ( new TdButton ( {
slot : '点击我' ,
emits : {
click : ( ) => {
alert ( '按钮被点击!' ) ;
}
}
} ) ) ;
}
}
<!DOCTYPE html>
< html lang ="en ">
< head >
< meta charset ="UTF-8 ">
< title > TypeDom UI Example</ title >
</ head >
< body >
< div id ="app "> </ div >
< script src ="dist/bundle.js "> </ script >
</ body >
</ html >
组件名
状态
说明
功能描述
Button
✔️
已完成
支持多种样式(默认、主要、文本)、禁用状态、图标按钮、加载状态、不同尺寸(small/medium/large)。
Container
✔️
已完成(含 td-header, td-aside, td-main, td-footer)
布局容器,支持响应式布局和嵌套。
Icon
✔️
已完成
图标组件,支持 SVG 图标、Unicode 字符、图标库扩展(如 Font Awesome 集成)。
Layout
✔️
已完成(含 Row, Col)
基于栅格系统实现响应式布局,支持间距控制、对齐方式。
Link
✔️
已完成
超链接组件,支持不同颜色主题、禁用状态、自定义图标。
Text
✔️
已完成
支持标题、段落、加粗、斜体、颜色(success/warning/error)、动态省略号。
Scrollbar
✔️
已完成
自定义滚动条,兼容虚拟滚动场景,支持横向/纵向滚动、滚动事件监听。
Space
✔️
已完成
通过 gap 属性控制子元素水平/垂直间距,支持响应式配置。
2. 数据组件(Data)(共23项,完成12项)
组件名
状态
说明
功能描述
Avatar
✔️
已完成
头像组件,支持图片、图标、文字头像、圆形/方形样式、悬浮效果。
Badge
✔️
已完成
徽章组件,支持数字、状态点、自定义颜色和内容,可与标签、菜单结合使用。
Calendar
❌
未开始
日历组件,支持月/周视图切换、日期范围选择、自定义渲染日期单元格。
Card
✔️
已完成
卡片组件,支持标题、操作区、阴影效果、响应式布局、折叠动画。
Carousel
❌
未开始
轮播图,支持自动播放、分页器、垂直/水平方向切换、自定义导航按钮。
Collapse
✔️
已完成
折叠面板,支持手风琴模式、自定义标题图标、动态展开/收起。
Descriptions
✔️
已完成
描述列表,用于展示结构化数据(如详情页),支持水平/垂直排列、标签宽度自定义。
Empty
✔️
已完成
空状态组件,支持自定义图标、文本、操作按钮,适用于无数据场景。
Image
✔️
已完成
图片组件,支持懒加载、放大镜、预览弹窗、加载失败占位符。
Infinite Scroll
❌
未开始
无限滚动组件,支持触底加载数据,适用于长列表、瀑布流场景。
Pagination
❌
未开始
分页器,支持自定义页码数量、跳转、显示总条数、小型化模式。
Progress
✔️
已完成
进度条组件,支持百分比显示、颜色渐变、环形进度条、动态更新。
Result
✔️
已完成
结果提示组件,支持成功/失败/警告状态,内置图标和操作按钮。
Skeleton
❌
未开始
骨架屏组件,支持模拟文本、图片、卡片的占位加载效果,提升用户体验。
Table
❌
未开始
表格组件,支持固定列、排序、分页、虚拟滚动(Virtualized Table)、行展开。
Virtualized Table
❌
未开始
虚拟化表格,仅渲染可视区域内的行,优化大数据量场景的性能。
Tag
✔️
已完成
标签组件,支持不同颜色(success/warning/error)、可关闭标签、动态添加。
Timeline
❌
未开始
时间轴组件,支持水平/垂直方向、自定义节点图标和内容。
Tree
❌
未开始
树形控件,支持懒加载、复选框、虚拟滚动(Virtualized Tree)、拖拽排序。
TreeSelect
❌
未开始
树形选择器,结合 Select 和 Tree 组件,支持多级菜单选择、搜索过滤。
Virtualized Tree
❌
未开始
虚拟化树形控件,优化大数据量场景下的渲染性能,支持动态加载节点。
Statistic
✔️
已完成
统计组件,支持数字滚动动画、时间格式化、自定义前缀/后缀。
Segmented
✔️
已完成
分段控制器,支持水平/垂直排列,常用于切换视图或选项卡。
组件名
状态
说明
功能描述
Autocomplete
❌
未开始
自动补全输入框,支持异步搜索、自定义选项渲染、键盘导航。
Cascader
❌
未开始
级联选择器,支持多级联动选择(如省市区),动态加载子级数据。
Checkbox
✔️
已完成
复选框组件,支持单选、多选、全选模式、自定义图标。
ColorPicker
❌
未开始
颜色选择器,支持色板、输入框手动输入、透明度调节。
DatePicker
❌
未开始
日期选择器,支持范围选择、快捷选项、日期格式化、禁用特定日期。
DateTimePicker
❌
未开始
日期时间选择器,结合日期和时间选择,支持格式化输出。
Form
⚠️
部分完成(需完善校验规则)
表单容器,支持校验规则(如必填、正则)、提交/重置按钮、错误提示。
Input
✔️
已完成
输入框,支持密码模式、前缀/后缀图标、清除按钮、多行文本(textarea)。
Input Number
✔️
已完成
数字输入框,支持步长调节、最小/最大值限制、格式化输入。
Input Tag
❌
未开始
标签输入框,支持动态添加/删除标签,回车或逗号分隔输入。
Radio
✔️
已完成
单选框组件,支持按钮组样式、禁用状态、横向排列。
Rate
✔️
已完成
评分组件,支持星星评分、半星评分、自定义图标和颜色。
Select
🔄
开发中
下拉选择器,支持搜索、多选、虚拟滚动(Virtualized Select)、分组选项。
Virtualized Select
❌
未开始
虚拟化选择器,优化大数据量场景下的下拉菜单性能,支持懒加载。
Slider
✔️
已完成
滑块组件,支持范围选择、步长调节、工具提示、垂直方向。
Switch
✔️
已完成
开关组件,支持自定义开/关文本、颜色、禁用状态。
TimePicker
❌
未开始
时间选择器,支持小时/分钟选择、格式化输出、禁用时间段。
TimeSelect
❌
未开始
时间段选择器,支持固定时间点选择(如 09:00-12:00)。
Transfer
❌
未开始
穿梭框组件,支持左右两侧数据转移、搜索过滤、自定义渲染。
Upload
⚠️
部分完成(需完善文件预览)
文件上传组件,支持拖拽上传、多文件、进度条、预览和删除操作。
4. 反馈组件(Feedback)(共10项,完成8项)
组件名
状态
说明
功能描述
Alert
✔️
已完成
警告提示,支持成功/警告/错误类型、可关闭、自定义图标和操作按钮。
Dialog
✔️
已完成
对话框,支持自定义标题、底部按钮、遮罩层关闭、拖拽移动。
Drawer
❌
未开始
抽屉组件,支持从左侧/右侧/顶部/底部滑出内容,遮罩层点击关闭。
Loading
❌
未开始
加载指示器,支持全局加载、局部加载、自定义文本和动画。
Message
✔️
已完成
轻量提示,支持成功/警告/错误类型、自定义持续时间、位置(top/bottom)。
MessageBox
✔️
已完成
消息弹出框,支持确认/取消操作,常用于表单提交或删除确认。
Notification
✔️
已完成
通知弹窗,支持图标、关闭按钮、点击关闭、自定义超时时间。
Popconfirm
✔️
已完成
气泡确认框,点击触发二次确认操作(如删除),支持自定义内容和位置。
Popover
✔️
已完成
弹出框组件,支持点击/悬停触发、自定义内容和位置。
Tooltip
✔️
已完成
文字提示组件,支持多种定位策略(top/bottom/left/right)、自定义内容。
5. 导航组件 (navigation)(共9项,完成2项)
组件名
状态
说明
功能描述
Affix
⚠️
部分完成(需完善滚动检测)
固钉组件,支持元素在滚动时固定到页面顶部/底部,常用于导航栏。
Anchor
⚠️
部分完成(需完善锚点高亮)
锚点导航,支持页面内快速定位,高亮当前滚动位置对应的锚点。
Backtop
✔️
已完成
回到顶部按钮,支持自定义触发阈值、滚动动画、目标位置。
Breadcrumb
✔️
已完成
面包屑导航,支持自定义分隔符、路由跳转、可点击路径。
Dropdown
❌
未开始
下拉菜单,支持点击/悬停触发、菜单项分组、图标和快捷键支持。
Menu
🔄
开发中
导航菜单,支持横向/垂直模式、子菜单展开、图标支持、路由集成。
Page Header
❌
未开始
页头组件,用于展示页面标题、副标题、操作按钮,增强页面导航感。
Steps
❌
未开始
步骤条组件,支持水平/垂直方向、当前步骤高亮、图标自定义。
Tabs
🔄
开发中
标签页组件,支持顶部/底部/左侧/右侧方向、可关闭标签页、懒加载内容。
6. 其它组件 (other) (共2项,完成2项)
组件名
状态
说明
功能描述
Divider
✔️
已完成
分割线组件,支持水平/垂直方向、自定义颜色和间距。
Watermark
✔️
已完成
水印组件,支持文字/图片水印、透明度调节、全屏覆盖。
✔️ :已完全实现并测试通过
⚠️ :功能部分实现(需补充细节或修复问题)
🔄 :开发中(核心功能已实现,但未完全测试)
❌ :未开始
已完成 :基础组件(basic)、部分数据组件(data)、反馈组件(feedback)
待完善 :表单组件(form)、导航组件(navigation)、高级数据组件(如虚拟化表格/树)
建议 :优先完善核心表单组件(如 Select, Form)和导航组件(如 Menu, Tabs),以提升框架完整性。
在 theme-chalk 目录下覆盖默认 SCSS 变量:
// 自定义主题变量
$--color-primary : #409EFF ; // 主色调
$--font-size : 14px ; // 基础字体大小
使用 babel-plugin-import 实现按需引入:
npm install babel-plugin-import --save-dev
// .babelrc 配置
{
"plugins" : [
[ "import" , {
"libraryName" : "@type-dom/ui" ,
"libraryDirectory" : "src/components"
} ]
]
}
方法 :
使用 theme-chalk 自定义变量,避免全局样式污染。
通过 scoped 样式或 Shadow DOM 隔离组件内部样式。
TypeDom UI 是一个 基于 OOP 设计、面向 TypeScript 项目 的 UI 组件库,适合需要强类型约束和模块化开发的企业级应用。通过按需引入和主题定制,开发者可以灵活适配不同项目需求。建议从简单组件(如 Button、Layout)开始实践,逐步探索复杂组件(如 Table、Tree)的高级功能。