1. 三元运算符相关
a = x ? x : y => a = x ?: y 或者 a = x || y
a = x ? true : false => a = !!x
2. 微软输入法和安全基线问题
修改前:没有注意微软输入法问题,数字等输入框没有规则校验
修改后:
(1)将校验规则统一维护成静态变量
(2)需要用到的组件引入并直接使用
3. v-for的时候一定要加key属性,且key属性的值一定不要用index
修改前:(index不稳定,增删时index可能会变化,进而引起key的变化)
修改后:(尽量用id,没有id就用type之类有区分度的变量)
4. 冻结仅用来展示的数据以提高性能
Vue不用进行数据劫持等操作,大大增加性能
5. 擅于利用正则表达式进行校验
// 修改前
if (value.indexOf('https://') < 0 && value.indexOf('htto://') < 0)
// 修改后
urlRule: /^http?:\/\//
if(!this.urlRule.test(value))
6. 静态变量建议统一写在开头便于阅读
补充:
组件**/实例的选项应该有统一的顺序:**
el –> filters -> props -> data -> computed -> watch -> 生命周期钩子 -> methods
元素 (包括组件) 的 attribute 应该有统一的顺序**:**
v-for -> v-if -> v-show -> v-once -> v-model -> v-on -> v-text
更详细的可查阅(cn.vuejs.org/v2/style-gu…
7. 擅于使用模板字符串
// 修改前:
this.$t('common.placeholderSelect') + this.$t('tipsTime')
// 修改后:
`${this.$t('common.placeholderSelect')}${this.$t('tipsTime')}`
8. 错误信息尽量由后端来维护
前端直接打印错误即可,可以使错误更加准确。
9. 提交表单时确定增加loading避免重复提交表单
修改后:
(1) 提交表单按钮增加loading属性,属性值定义在data中,为布尔值
(2) 表单校验通过时,置为true,如果失败置为false
10. 擅用Object和Map处理else if及switch case
Map的优势:
(1)Object的键只能是字符串或者Symbols,但是Map可以是任意值,包括函数、对象、基本类型。
(2)Map是干净的,只含有显示插入的键,而Object上会有原型上的属性以及方法。
(3)Map中的key是有序的,迭代的时候以其插入的顺序返回键值,而object的键是无序的。
(4)Map长度可以通过size方法来获取,而object需要手动计算。
(5)Map是可迭代的,object需要通过获取键来迭代。
(6)在频繁增删键值对的场景下表现更好,在频繁添加和删除键值对的场景下未作出优化。
所以复杂情况推荐使用Map。
11. 字典不需要监听数据变化,不要定义在data里,也要避免魔数字
修改前:
data里面定义:导致魔数字,无用的数据监听
修改后:
(1)定义静态变量
(2)将字典的映射关系写在computed
(3)在方法和模板中使用
12. 其他常见问题
(1)尽量不要写魔数字
(2)尽量不要写行内样式
(3)props属性加上默认值
(4)属性后加空格