开发宗

102 阅读1分钟

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阻止默认动作。