- if...if型
- 痛点:复杂度指数型增长(详见原文)
- 解决方法:将每个if(){}都可以拆分为函数,逐个调用,将复杂度从指数级下降到线性级
- else if...else if型
- 痛点:
- 深层嵌套时,指数型增长
- 数量过多时,违背职责单一原则 - 解决方法:
1. 查找表:拆分每个else if为函数,封装为键值对形式的若干个action,增加一个判断采取哪个action的方法
2. 当判断条件复杂、action的执行顺序有要求时:
1. 定义一个数组,数组元素具有match和action属性
2. 对数据进行遍历,当某个元素的match属性被满足时,执行action并返回
3. 这样的一个数组被称为职责链数组
- 痛点:
- Regular 组件开发的一些建议 (https://github.com/kaola-fed/blog/issues/102)
- 单一职责,避免过于庞大的组件,组件拆分时可以通过容器组件、UI组件来划分
- 纯函数,将不直接获取、改变data的方法,拆分在组件之外,不放在this上
- 少用双向绑定,用事件来传递数据,当嵌套过深时,使用esb或状态管理方案
- this.data只存放UI相关的数据,必要时,将逻辑相关字段放在容器组件上
- 组件传入参数的结构清晰,并遵循最少知道原则
- 模版中不使用复杂的表达式,而是使用filter
- dependencies:业务环境需要
- devDependencies:开发环境需要
- peerDependencies:指定当前包兼容的宿主包
- optionalDependencies: 可选的包
- bundledDependencies / bundleDependencies:打包依赖