总体规范

统一架构

悟空代码评审 - 图1

统一风格

悟空代码评审 - 图2

代码示例——以“组件管理”为例

模块划分

组件管理页面主要可分为:分组导航模块、查询条件模块、卡片列表模块。如下图所示:
image.png

功能梳理

悟空代码评审 - 图4

定义结构

悟空代码评审 - 图5

页面开发

根目录结构

  • components:组件管理页面子组件
  • detail:组件详情目录
  • 组件管理代码:
    • index.html
    • index.scss
    • index.ts

image.png

index.html

image.png

index.scss

image.png

index.ts

image.png

菜单组件逻辑

image.png

传入数据

image.png
image.png

menu的获取

image.png
子菜单默认值其实就是父级菜单改了名字,点击全部组件实际上查的是父级菜单关联的组件列表
image.png

searchMenuId的获取

通过点击搜索结果设置searchMenuId的值,用以菜单定位。因为搜索是全局搜索,可能搜出来的组件不属于当前选中的菜单,因此需要反向定位到该组件的菜单。
image.png

传出函数

handleMenuClick 菜单点击操作
  • 存储当前菜单categoryId
  • 重置查询参数queryParamscondition条件
  • 查询当前categoryId关联的组件列表

image.png
image.png
image.png

全量上传与批量上传

image.png

  • 明确上传类型
  • 打开上传组件弹窗

    组件的上传流程
  • 上传前预处理

image.png

  • 执行handleUpload开始上传

image.png
image.png

oneClickDownload全量下载

image.png

内部逻辑

页面渲染

image.png

选中样式——menuItemWarpper

menuItemWarpper是一个get方法,返回一个与菜单数据相关的函数。通过匹配id将选中的菜单项增加选中样式。通过匹配数据disabled字段,给菜单增加禁用样式
其中:menuCatagory为父级菜单类目Id,调用父级菜单点击事件给其赋值;subMenuCatagory为子菜单类目Id,调用子菜单点击事件给其赋值。
image.png
image.png

菜单点击

父级菜单点击

image.png

子菜单点击

image.png
image.png

菜单反选

image.png

条件查询逻辑

image.png

条件改变

image.png

自定义功能触发

image.png

新组件上传

组件包上传——拖拽、文件选择两种方式

image.png
image.png

组件包信息填充

解析组件包名中的:组件编码和组件版本。
组件包命名规范示例:
悟空代码评审 - 图36
image.png
image.png
image.png

搜索结果点击

  • searchMenuId赋值,进行菜单反查;
  • componentList赋值,在卡片列表中展示选中组件;

image.png

卡片列表逻辑

image.png
image.png
复用了公共的Card组件。
image.png
image.png
image.png

总结

.html 部分

  1. 尽量使用语义化标签
  2. 减少不必要的嵌套

    .scss 部分

  3. 优先使用内置封装函数

image.png

  1. Ant Design 样式按照设计规范初始化

image.png

.ts部分

  1. 必要的interface 定义

示例:地图信息框样式配置
image.png

  1. 组合优于继承,对页面模块细化,组件抽离

悟空代码评审 - 图49
在这之前,已经将CreateCard抽离成公共组件。其他页面诸如:我的大屏、专题模板也在使用。
需求变更之后:

  • html方面只需引入CreateCard组件,判断如果是 地图菜单,将其显示;
  • scss方面已经是grid布局,无需改动;
  • ts 方面给原点击函数增加默认参数;

image.png
image.png

  1. 理清逻辑,函数尽量功能单一化,减少嵌套

image.png
需求:默认选中已选择接口,并展开所有层级目录
问题:目录树是单独接口,叶子节点是点击目录异步获取,且只有父级目录Id,如何匹配所有层级?
解决方法:

  • 遍历目录树集合
  • 广度优先搜索铺平目录树
  • 根据叶子节点的parentId生成层级目录数组

image.png
image.png

谢谢大家