总体规范
统一架构
统一风格
代码示例——以“组件管理”为例
模块划分
组件管理页面主要可分为:分组导航模块、查询条件模块、卡片列表模块。如下图所示:
功能梳理
定义结构
页面开发
根目录结构
components
:组件管理页面子组件detail
:组件详情目录- 组件管理代码:
index.html
index.scss
index.ts
index.html
index.scss
index.ts
菜单组件逻辑
传入数据
menu
的获取
子菜单默认值其实就是父级菜单改了名字,点击全部组件实际上查的是父级菜单关联的组件列表
searchMenuId
的获取
通过点击搜索结果设置searchMenuId
的值,用以菜单定位。因为搜索是全局搜索,可能搜出来的组件不属于当前选中的菜单,因此需要反向定位到该组件的菜单。
传出函数
handleMenuClick 菜单点击操作
- 存储当前菜单
categoryId
- 重置查询参数
queryParams
的condition
条件 - 查询当前
categoryId
关联的组件列表
全量上传与批量上传
- 执行
handleUpload
开始上传
oneClickDownload
全量下载
内部逻辑
页面渲染
选中样式——menuItemWarpper
menuItemWarpper
是一个get
方法,返回一个与菜单数据相关的函数。通过匹配id
将选中的菜单项增加选中样式。通过匹配数据disabled
字段,给菜单增加禁用样式。
其中:menuCatagory
为父级菜单类目Id
,调用父级菜单点击事件给其赋值;subMenuCatagory
为子菜单类目Id
,调用子菜单点击事件给其赋值。
菜单点击
父级菜单点击
子菜单点击
菜单反选
条件查询逻辑
条件改变
自定义功能触发
新组件上传
组件包上传——拖拽、文件选择两种方式
组件包信息填充
搜索结果点击
searchMenuId
赋值,进行菜单反查;componentList
赋值,在卡片列表中展示选中组件;
卡片列表逻辑
总结
.html 部分
Ant Design
样式按照设计规范初始化
.ts部分
- 必要的interface 定义
示例:地图信息框样式配置
- 组合优于继承,对页面模块细化,组件抽离
在这之前,已经将CreateCard
抽离成公共组件。其他页面诸如:我的大屏、专题模板也在使用。
需求变更之后:
html
方面只需引入CreateCard
组件,判断如果是 地图菜单,将其显示;scss
方面已经是grid布局,无需改动;ts
方面给原点击函数增加默认参数;
- 理清逻辑,函数尽量功能单一化,减少嵌套
需求:默认选中已选择接口,并展开所有层级目录
问题:目录树是单独接口,叶子节点是点击目录异步获取,且只有父级目录Id,如何匹配所有层级?
解决方法:
- 遍历目录树集合
- 广度优先搜索铺平目录树
- 根据叶子节点的
parentId
生成层级目录数组