Skip to content

开发组件设计流程标准

文档编号: SYS-STD-ARCH-COMP-001
版本: 1.0
创建日期: 2026-03-08
作者: 架构师
状态: ✅ 已完成


1. 流程概述

1.1 目的

本文档定义System平台开发组件设计的标准化流程,包括前端组件设计和后端组件设计,确保组件设计的一致性、可复用性和可维护性。

1.2 适用范围

  • 前端基础UI组件设计
  • 前端业务组件设计
  • 后端通用组件设计
  • 工具类组件设计

1.3 流程目标

  1. 建立统一的组件设计规范
  2. 提高组件复用率,减少重复开发
  3. 确保组件质量和可维护性
  4. 形成完整的组件文档体系

2. 流程步骤

步骤1: 基础组件选型

目标: 确定基于哪些开源/商业组件进行封装和扩展

输入:

  • 技术选型报告
  • 项目需求分析
  • 团队技术栈评估

活动:

  1. 前端组件选型

    • UI组件库选择(Element Plus、Ant Design Vue等)
    • 工具库选择(VueUse、Lodash等)
    • 图标库选择
    • 日期处理库选择
  2. 后端组件选型

    • Web框架选择(Spring Boot)
    • ORM框架选择(MyBatis Plus)
    • 安全框架选择(Spring Security)
    • 连接池选择(Druid)
    • API文档工具选择(Knife4j)
  3. 封装策略确定

    • 前端:继承扩展、组合封装、主题定制
    • 后端:Starter封装、自动配置、注解驱动

输出:

  • 组件选型清单
  • 封装策略文档

验收标准:

  • [√] 组件选型符合项目需求
  • [√] 开源组件社区活跃
  • [√] 封装策略清晰可行

步骤2: 前端组件设计

目标: 设计前端基础UI组件和业务组件

输入:

  • 组件选型清单
  • 业务需求分析
  • UI设计稿

活动:

  1. 基础UI组件设计

    • SysButton:权限按钮,支持权限控制和确认对话框
    • SysTable:数据表格,支持分页、排序、筛选、权限控制
    • SysForm:动态表单,支持多种组件类型和动态渲染
    • SysSelect:下拉选择,支持数据字典和远程搜索
    • SysDialog:对话框,支持全屏、拖拽、自适应
  2. 业务组件设计

    • SysDeptTree:部门树,支持懒加载和多选
    • SysUserSelect:用户选择器,支持远程搜索和部门筛选
    • SysRoleSelect:角色选择器
    • SysMenuTree:菜单树,用于权限分配
    • SysDictSelect:字典选择,自动加载字典数据
    • SysUpload:文件上传,支持多文件和图片预览
    • SysIconSelect:图标选择器
    • SysPermissionMatrix:权限矩阵,用于角色权限分配
  3. 组件规范定义

    • 命名规范:大驼峰命名
    • 样式规范:SCSS + BEM
    • 文档规范:Props/Events/Slots说明

输出:

  • 前端组件设计文档
  • 组件API文档
  • 组件使用示例

验收标准:

  • [√] 组件功能完整
  • [√] API设计合理
  • [√] 文档清晰完整

步骤3: 后端组件设计

目标: 设计后端通用组件和工具类

输入:

  • 组件选型清单
  • 业务需求分析
  • 架构设计文档

活动:

  1. 统一响应封装

    • Result响应对象:统一响应格式
    • ResultCode状态码:业务状态码定义
    • PageResult分页响应:分页数据封装
  2. 全局异常处理

    • 异常体系设计:BusinessException、ValidationException等
    • 全局异常处理器:统一异常处理
    • 异常日志记录:区分日志级别
  3. 数据校验组件

    • 自定义校验注解:@Phone、@IdCard、@EnumValue等
    • 校验工具类:ValidationUtils
  4. 日志组件

    • @OperationLog注解:操作日志记录
    • 操作日志切面:AOP实现
    • 异步日志保存:性能优化
  5. 工具类组件

    • SecurityUtils:安全工具类
    • IpUtils:IP地址工具类

输出:

  • 后端组件设计文档
  • 组件源码
  • 组件使用文档

验收标准:

  • [√] 组件功能完整
  • [√] 代码质量高
  • [√] 文档清晰完整

步骤4: 组件评审

目标: 评审组件设计结果,确保设计质量

输入:

  • 前端组件设计文档
  • 后端组件设计文档
  • 组件源码

活动:

  1. 前端组件评审

    • 基础UI组件评审
    • 业务组件评审
    • 组件规范评审
  2. 后端组件评审

    • 统一响应封装评审
    • 全局异常处理评审
    • 数据校验组件评审
    • 日志组件评审
    • 工具类组件评审
    • 代码规范评审
  3. 问题处理

    • 记录评审意见
    • 制定修改计划
    • 完成文档修订

输出:

  • 开发组件评审记录
  • 修订后的设计文档

验收标准:

  • [√] 评审意见完整记录
  • [√] 所有问题已解决
  • [√] 文档正式批准

3. 关键模板

3.1 前端组件模板

vue
<template>
  <el-button
    :type="type"
    :size="size"
    :disabled="disabled || !hasPermission"
    @click="handleClick"
  >
    <slot />
  </el-button>
</template>

<script setup>
import { computed } from 'vue'
import { usePermission } from '@/hooks/usePermission'

const props = defineProps({
  type: { type: String, default: 'default' },
  size: { type: String, default: 'default' },
  permission: { type: String, default: '' },
  confirm: { type: Boolean, default: false },
  confirmText: { type: String, default: '' }
})

const emit = defineEmits(['click'])

const { hasPermission } = usePermission(props.permission)

const handleClick = () => {
  if (props.confirm) {
    ElMessageBox.confirm(props.confirmText, '提示', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    }).then(() => {
      emit('click')
    })
  } else {
    emit('click')
  }
}
</script>

3.2 后端组件模板

java
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Result<T> implements Serializable {
    
    private Integer code;
    private String message;
    private T data;
    private Long timestamp;
    private String requestId;
    
    public static <T> Result<T> success(T data) {
        return Result.<T>builder()
                .code(ResultCode.SUCCESS.getCode())
                .message(ResultCode.SUCCESS.getMessage())
                .data(data)
                .timestamp(System.currentTimeMillis())
                .requestId(MDC.get("traceId"))
                .build();
    }
    
    public static <T> Result<T> error(String message) {
        return Result.<T>builder()
                .code(ResultCode.ERROR.getCode())
                .message(message)
                .timestamp(System.currentTimeMillis())
                .requestId(MDC.get("traceId"))
                .build();
    }
}

3.3 组件选型清单模板

组件类型开源组件版本用途
UI组件库Element Plus2.5.x基础UI组件
ORM框架MyBatis Plus3.5.x数据访问层
连接池Druid1.2.x数据库连接池
API文档Knife4j4.4.xAPI文档生成

4. 输出文件

序号文件名称文件编号说明
1前端组件设计SYS-DES-ARCH-COMP-001前端组件规范
2后端组件设计SYS-DES-ARCH-COMP-002后端组件规范
3开发组件评审记录SYS-DES-ARCH-COMP-REV-001评审结果和签字

5. 修订记录

版本日期作者变更内容
1.02026-03-08架构师初始版本,定义开发组件设计流程标准

Released under the MIT License.