AdmSysV2【公共组件库】@前端(For Git Submodule)
edit | blame | history | raw

项目结构

本文档详细描述 admin2-components 项目的目录结构和组件分类规范。

整体结构

admin2-components/
├── src/                    # 源代码
│   ├── framework/          # 框架组件 - 页面主结构
│   ├── forms/              # 表单组件 - 用户输入
│   ├── fragments/          # 页面片段 - 布局元素
│   ├── plugins/            # 高级组件 - 复杂功能
│   ├── bases/              # 业务组件 - 领域特定
│   └── assets/             # 静态资源
├── test/                   # Vitest 测试配置和案例
├── example/                # 组件展示案例
├── public/                 # 公共资源
├── openspec/               # 变更管理
├── README.md               # 项目概述
├── CLAUDE.md               # Claude 工作指导
└── STRUCTURE.md            # 本文档

src/ 目录

framework/ - 框架组件

页面主结构相关的组件,管理系统的整体布局。

framework/
├── headerBar/      # 顶部导航栏
├── sideMenu/       # 侧边菜单
├── pageViews/      # 多页签视图
├── screenGrid/     # 屏幕网格布局
└── scrollablePanes/ # 可滚动面板

典型组件: CHeaderBar, CSideMenu, CPageViews, CScreenGrid

forms/ 表单组件

处理用户输入的各类表单组件。

forms/
├── datePicker/         # 日期选择
├── cascader/           # 级联选择
├── select/             # 下拉选择
├── input/              # 文本输入
├── upload/             # 文件上传
├── colorPicker/        # 颜色选择
├── chinaAddress/       # 中国地址级联
└── ...

典型组件: CDatePicker, CChinaCascader, CImageUploader, CFileUploader

fragments/ - 页面片段

页面中的小型布局元素和UI片段。

fragments/
├── contentBox/     # 内容盒子
├── gridBox/        # 网格盒子
├── flatForm/       # 扁平表单
├── helper/         # 辅助工具
├── notice/         # 通知提示
├── text/           # 文本组件
├── icons/          # 图标组件
└── ...

典型组件: CContentBox, CGridBox, CFlatForm, CHelper, CNotice

plugins/ - 高级组件

复杂功能组件,通常包含较多业务逻辑。

plugins/
├── richTable/       # 高级表格
├── tableForm/       # 表格表单
├── editableTable/   # 可编辑表格
├── echarts/         # 图表组件
├── draggableModal/  # 可拖拽弹窗
├── detailTabsModel/ # 详情页签弹窗
├── imageViewer/     # 图片查看器
├── itemEditor/      # 条目编辑器
├── richEditor/      # 富文本编辑器
└── ...

典型组件: CRichTable, CEditableTable, CEchartsPie, CDraggableModal

bases/ - 业务组件

领域特定的业务组件,与具体业务场景强相关。

bases/
├── Director/            # 总监相关
├── DirectorHome/        # 总监首页
├── DirectorOperationListing/  # 运营列表
└── ...

典型组件: Director, DirectorHome, DirectorOperationListing

assets/ - 静态资源

静态资源文件,如图片、数据文件等。

assets/
├── images/        # 图片资源
├── datas/         # 数据文件(如地区数据)
└── ...

test/ - 测试目录

Vitest 测试配置和测试案例。

test/
├── setup.ts       # Jest DOM 全局断言配置
├── unit/          # 单元测试
├── integration/   # 集成测试
└── e2e/           # 端到端测试(Playwright)

example/ - 组件展示案例

用于独立展示和调试组件的示例页面,是项目的入口点。

example/
├── App.tsx       # 演示应用入口
├── main.tsx      # 渲染入口
└── index.css    # 全局样式

入口文件: index.html 引用 /example/main.tsx 作为模块入口。

文件命名规范

组件文件

  • 组件文件: 以 C 开头,如 CButton.tsx
  • 样式文件: 以 c 开头,如 cButton.scss
  • 类型文件: 以 types 结尾,如 buttonTypes.ts

目录命名

  • 组件目录: 使用 CamelCase,如 datePickerrichTable
  • 目录内的组件文件放在对应名称的子目录中

示例

forms/
└── datePicker/
    ├── CDatePicker.tsx      # 主组件
    ├── cDatePicker.scss     # 样式
    ├── useDatePicker.ts     # Hook(可选)
    └── datePickerTypes.ts   # 类型定义(可选)

组件开发规范

  1. 函数组件: 使用函数式组件 + Hooks
  2. TypeScript: 严格模式,提供完整的类型定义
  3. 样式隔离: 使用 CSS Modules 或 SCSS 避免样式污染
  4. 单一职责: 每个组件专注于单一功能
  5. 可复用性: 提取通用逻辑为自定义 Hook