web调试以及虚拟滚动| 青训营笔记

189 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第7天

前端bug特点

  1. 多平台:web、nodejs、小程序
  2. 多环境:本地、线上
  3. 多工具:chrome
  4. 多技巧:clg、breakpoint

web上chrome调试

chrome

  1. .cls可以修改样式
  2. 右键代码可以强制激活伪类

log

console有多种日志等级 console.table()打印数组 console.debug——chrome不支持 console.time和console.timeEnd这两个方法可以用来让WEB开发人员测量一个javascript脚本程序执行消耗的时间。

image.png

断点调试web debugger

在source界面 image.png

压缩后代码调试

利用压缩和混淆将代码变得不可阅读 sourceMap——可以找到报错的源码

network

请求的资源

performance网络性能

利用此工具进行优化 录制后进行分析,查看丢帧,render渲染/http请求耗时 offset会对浏览器所有进行重绘重排, image.png

Lighthouse

性能分析指标

image.png

移动端调试

移动端由于没有做过相应的开发,因此未认真看

虚拟滚动

补上一段今天学习的虚拟滚动吧

资料——虚拟滚动的三种实现思路

针对大列表渲染的场景(如全国城市列表、通讯录列表、聊天记录列表) 当列表数量级达到上千,页面渲染或操作就可能会出现卡顿,而当列表数量突破上万甚至十几万时,网页可能会出现严重卡顿甚至直接崩溃。为了解决大列表造成的渲染压力,便出现了虚拟滚动技术。

卡顿原因在于

  1. js脚本时间
  2. dom渲染时间

减少列表子项可以有效缓解压力——按需渲染 只渲染某一时刻用户看的到的内容,当用户滚动页面时,再通过JS的计算重现调整视窗内的内容

虚拟滚动

实现

  1. 确定当前视窗
  2. 确定当前渲染那些节点
  3. 把渲染节点移动到视窗内

transform

通过监听滚动区域的滚动事件,动态计算视窗内渲染节点的开始索引以及偏移量,然后重新触发渲染节点的渲染并将内容通过transform属性将该部分内容移动到视窗内。

数据

与懒加载不同,虚拟滚动需要一次性获取所有数据,但是只显示屏幕可见范围内的数据

代码

其中使用了节流方法限制多次滚动产生的多个请求

可以通过修改throttling()函数第二个参数,即变得明显——加载速度慢,clg输出1的速度也会变慢 如修改成2000,则不论怎么滚动,都只输出一次111