今天讲一讲开发中的规范——“加大空”,分别是加载、大于、空值。
加载
:页面过渡时需要加载动画。大于
:数据可能存在过大或过小的情况,此时前端需要做溢出或过小的样式处理。空值
:任何数据拿到都要判断空异常、以及判断类型异常。
以上错误在初级前端经常会犯,故特此总结,记忆时可记成假大空,方便记忆。
加——页面过渡时需要加载动画
页面过渡时需要加载动画,很多初级前端在写页面的时候从来不考虑加载动画,后台请求数据时,常常是空数据样式直接到有数据的列表,交互体验很差,这是一种很低级的错误。
一般选用骨架屏,样式更好看。
大——大于或小于数据展示范围的特殊处理
- 数据大于了展示范围,考虑溢出的处理
这种情况需要加溢出省略处理
空——空值、异常值的处理
数据空值、异常值的处理,空样式展示。
空样式的处理
判空的处理——可选链式选择语法。
当你在获取一个对象的属性的时候,你可能需要检测这个属性是否存在,否则会报错;比如:
var obj
console.log(obj.name)
会报错:TypeError: Cannot read property 'name' of undefined
;
特别是后端接口返回的数据,前端数据一般是你自己定义的,有就是有,没有就是没有;
后端有时候说好的有,结果没有…/(ㄒoㄒ)/~~
开个玩笑,继续~
所以在使用接口返回的数据的时候,要做属性判断,再使用:
if(resp && resp.data) {
this.tableData = resp.data
}
如果属性嵌套很深,就很难受了 ≧ ﹏ ≦
if (person && person.owner && person.owner.permission) {
let usecar = person.owner.permission.usecar
}
所以对于复杂的属性判断,使用 可选链 就很棒了。
它使我们能检查一个对象上面的某属性是否为 null
或者 undefined
,如果是,则返回 undefined
,而不会报错。
this.tableData = resp?.data
可选链还可以在数组中使用
let moveName = movie.actors?.[0]?.name
⬇
object?.property
;常见的一种object?.[expression]
;用于访问数组项或访问动态属性object?,[arg1, [arg2, ...]
;用于执行对象的一个方法,有时候不知道这个对象的方法是否存在,也可以用可选链来搞
const object = null
object?.method(‘Some value’) // => undefined
可选链接运算符的有趣之处在于,只要在左侧 leftHandSide?.rightHandSide
遇到无效值,右侧访问就会停止,这称为短路。
看看例子:
const nothing = null;
let index = 0;
nothing?.[index++]; // => undefined
index; // => 0
最后
每次写完代码以后,请默认“加大空”三遍,好好检查自己的代码是否有遗漏。