项目1:数据可视化
产出1:多接口复用
- 背景
- 多个功能,本质上都是对表格数据进行筛选
- 和后端同学达成一致意见,这些功能只用一个接口搞定
- 前端这边的工作就是每个功能传输不一样的参数
- 初期处理
每个功能对应一个函数,触发时创造参数对象,然后调用 getTableList 方法
async functionN (){
const params = {
...
};
const res = await getTableList(params);
console.log(res);
}
- 问题出现及分析
无法记忆/修改之前的操作:
分析:这些功能都是为了筛选表格数据,用的是同一个接口,只是传递参数不一样而已
- 优化解决
设定一个共同的容器,往里面新增、删除、修改参数
- 结果
可以记忆和修改之前的筛选条件
产出2:多弹窗复用
-
背景 弹窗种类繁多,但彼此包含相同的子模块
-
初期处理
虽然用的是同一个弹窗,但是内容是用 if....else 来分开内容
<template>
<modal v-if="type==='copy'">
</modal>
<modal v-else-if="type==='rename'">
</modal>
<modal v-else-if="type==='remove'">
</modal>
...
</template>
- 问题出现
if...else... 的数量取决于弹窗种类数量,并没有从本质上解决问题
- 优化解决
不要用 if...else... 来控制弹窗内容,而是用 if...else... 来控制子模块在哪种类型的弹窗中显示
- 结果
if...else... 的数量不是取决于弹窗种类
数量,而是取决于子模块
的种类数量
<template>
<section v-if="type==='copy'">
</section>
<section v-else-if="type==='copy'||type==='publish'">
</section>
<section v-else-if="type==='remove'||type==='publish'">
</section>
...
</template>
- 继续优化
(模板字符串的利用)
产出3:数据反馈及减少 Observer 的开销
- 背景
右边区域的组件要对主体区域的图表组件的图表属性进行设置
- 初期处理
右边区域的组件关闭之后触发事件将表单数据传递到主体组件中,完成更新渲染(更新设置图表属性)
-
方案调研
-
问题出现
直接将表单数据(一个对象)替换整个图表属性数据对象,会导致 Observer 的监听项数量直接拉满
证明如下:基于 vue 2.x 是利用 Object.defineProperty 来实现数据双向绑定的(即使值没有发生改变,但有发生替换就会被 Observer 监听到)
- 优化解决
不要直接替换整个对象,而是找出修改项,然后在图表属性数据对象里修改对应项
- 结果
大大减少了 Observer 的开销:Observer 监听项从总共的 80 项减少为修改项的数量
项目2:头像表情包小程序
Canvas
产出1:解决图像、文字绘制模糊问题
-
原因
-
方案调研
-
解决
-
结果
产出2:分层画布,减少重复内容绘制
-
背景
-
方案调研
-
初期处理
-
问题出现
-
优化解决
-
结果
项目3:智慧餐厅服务系统
产出1:各机型适配
-
背景
-
方案调研
-
初期处理
-
问题出现
-
优化解决
-
结果
产出2:侧边栏与主体内容同步
-
背景
-
方案调研
-
初期处理
-
问题出现
-
优化解决
-
结果