思考为什么后端直接给我们全部航班数据, 让客户端自己翻页;也不预先计算航班时间, 需要客户端自己计算?
两种不同的分页风格
- 头条新闻类 – 后端负责分页, 前端只需要传入页码和每页长度, 获取到的就是应该显示的数据。
- 航班信息类 – 直接所有数据交给你, 由前端进行处理分页。
原因一:用户量大, 一个人来回切换页码就会造成多次访问请求。
原因二:用户终端(电脑)性能更好。
机票页面是一个流量密集型的服务。
- 航班信息数据相对新闻列表等数据相对有限,因此客户端处理的数据量并不大。
- 一个人多次访问, 每多翻一页, 就多一次请求。
- 多个人访问, 每个人获取一百条数据,一个人计算一百次, 如果一百次浏览就是 就是一万次的计算。
对于页面的请求, 如果每个人读取十张飞机票就重新发送请求, 那么 服务器就要多处理一次。
对于航空公司来说, 计算航班之间时间是需要服务器运算力,。
有一百个航班的话, 一个人访问, 服务器计算 100 次, 100个人访问, 服务器就要计算 10000 次,
服务器的运算要求极多的运算资源。
但是如果将计算的过程交给用户, 其实每个用户自己无非就是计算 100次而已。
计算航班的持续时间
- 先将所有时间换算成分钟
- 相减 再转换为 小时 分钟格式即可
- 每当跨过凌晨, 到达下一天的时候, 减出来的数据都会是负数, 其实少了24小时,需要重新加回去
如果算出来的相差时间是负数, 就要添加24小时的分钟进去
//计算属性
computed:{
duration: function () {
const start =
Number(this.data.dep_time.split(":")[0] * 60) +
Number(this.data.dep_time.split(":")[1]);
const end =
Number(this.data.arr_time.split(":")[0] * 60) +
Number(this.data.arr_time.split(":")[1]);
// console.log(start);
// console.log(end);
// const timeduration = end - start;
//因为后面有重新赋值,不能用const
//报错显示:timeduration is read only
let timeduration = end - start;
// console.log(timeduration);
//跨过0点,加多一个24小时
if (timeduration < 0) {
timeduration = timeduration + 24 * 60;
}
return Math.floor(timeduration / 60) + "时" + (timeduration % 60) + "分";
},
}