1、仪表盘页面突然很卡顿?
滥用vue的$forceunpdate() 配合outclick 导致每次点击多次触发更新
2、老板的mac很卡顿但是别人的没事?
去申请公司同款mac,发现确实卡顿,访问阿里的qucikbi 也是很卡顿,分析:浏览器的版本不对原来是chrome的dev版本不是稳定版本
ps 查阅dev版本是开发版本存在很多bug,浏览器的引擎的垃圾回收有问题,导致内存泄漏。
3、用户不小心操作丢失大量的仪表盘数据?
和后台查阅请求保存的记录,找到最后一次完整的数据的保存记录(保留2个月的请求记录),模拟请求恢复数据。
4、页面内存损失严重。
vue的项目中有些v-if销毁组件 ,但是子组件缓存的一些dom片段或是数据不会被销毁,那需要手动的去调用destroyed 譬如 this.$refs.selectRef.destroyed()
5、事件优化 减少click绑定在每个DropdownItem上
<Dropdown
transfer
@on-click="(name)=>{
addHead(name,index,collapseItem)
}"
>
<a href="javascript:void(0)">
<span class="iconfont iconicons- head-operate noToggle"></span>
</a>
<DropdownMenu slot="list">
<DropdownItem
name='addBrother'
>添加并行表头</DropdownItem>
<DropdownItem
name='addSon'
>添加子表头</DropdownItem>
</DropdownMenu>
</Dropdown>
addHead(type, index,collapseItem) {
this[type](index,collapseItem);
},
6、@scroll.passive="" 监听器能保证的只有一点,那就是调用 preventDefault() 无效
【浏览器只有等内核线程执行到事件监听器对应的JavaScript代码时,才能知道内部是否会调用preventDefault函数来阻止事件的默认行为,所以浏览器本身是没有办法对这种场景进行优化的。这种场景下,用户的手势事件无法快速产生,会导致页面无法快速执行滑动逻辑,从而让用户感觉到页面卡顿。】
通俗点说就是每次事件产生,浏览器都会去查询一下是否有preventDefault阻止该次事件的默认动作。我们加上passive就是为了告诉浏览器,不用查询了,我们没用preventDefault阻止默认动作。