如何有效地Debug调试前端代码?

引言

新年好各位读者,不知道各位年吃的好吗,本宇宙过了个年长胖了好几斤啊。

今天依旧是更新前端的文章,关于人工智能和WEBGIS后期会陆续更新几篇,其实都已经找好了素材,就是比较忙,加上前端需要总结和学习的东西很多,因此前端会更新的比较频繁,如有感兴趣的可以在评论中留言。话不多少我们开始吧!

DevTools

由于JS的特殊性,没有Nodejs的时候,都是在浏览器中运行的,因此很多人会懵,因为不像其他语言如Python在代码行里打断点就行,前端都不知道在哪里打断点,甚至在早期不知道调试,我一般都是使用console.log来进行打印,有的时候还有一些奇奇怪怪的bug找不到错的原因,而其实浏览器内置DevTools有很多你没用过的功能会大大提高你的调试效率。


DevTools就是大家用浏览器F12可以召唤出来,或者右击鼠标的检查按钮,相信接触过前端的朋友对这都不陌生,一般我们会经常用到元素(Element)选择一下元素、控制台(console)看看打印,但是其他的几个功能就用得少了,其实其他的功能也大有可为,今天我就将这个几个功能都介绍一下,都是在开发当中会经常用到的。

1.元素 Element

在元素一栏,我们可以看到,左边为HTML代码,鼠标移动到对应的html元素,会在浏览器中框选,可以查看元素的大小,并且还可以在右侧的样式中实时修改样式,

选择html元素

实时修改css样式:

点击.cls增加新的class;取消勾选"popular-container"类,则取消该class的样式:

点击左上角可以在网页中选择元素

右键元素还可以隐藏和强制其状态变为伪类

也可以点击:hov是状态变为伪类

在已计算中可以找到已经生效的css样式,然后跳转

也可以对Html元素进行截屏

2.控制台 Console

可以在控制台展示不同的日志打印,并且可以使用一些占位符:

  • %s :字符串占位符
  • %o :对象占位符
  • %c :样式占位符
  • %d :数学占位符
console.log('Welcome to bytedance!');
console.warn('Welcome to bytedance!');
console.error('Welcome to bytedance!');
console.debug('Welcome to bytedance!');
console.info('Welcome to bytedance!');
console.log('%s %o,%c %s','hello',{name:'tom',age:18},'font-size:24px;color:red','Welcome to bytedance!')

具象化展示数组和JSON:
console.table

文件树展示:
console.dir(object)

源代码 Source

如下图所示,源代码分以下四个区域,分别为:

  1. 文件目录树
  2. 代码区域
  3. Debug工具栏(从左往右)
  • 暂停(继续)
  • 单步跳过
  • 进入函数
  • 跳出函数
  • 单步执行
  • 激活(关闭所有断点)
  • 出现异常时暂停
  1. 断点调试栏


点击代码区域的行的数字,即可添加断点

此外我们还可以查看函数的作用域(包含闭包)和调用堆栈,查看调用的顺序来排查错误

关于闭包和堆栈的知识可以参考:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures

https://developer.mozilla.org/zh-CN/docs/Glossary/Call_stack

此外还可以查看发送请求的断点和DOM发生变化的断点:

SourceMap

我们在看别人的网站都是一条代码,这是因为别人在打包项目上线都进行了加密和混淆,但这并不利于我们上线后调试,因为我们用vue脚手架等打包都会加密和混淆,导致代码不可看,这里我们可以设置webpack使用sourcemap,与我们的源码进行映射,这样我们打包后除了源代码还有一个.map文件,浏览器根据.map文件进行还原,一般企业里都是把.map文件上传到另一个服务器,这样出错了再去对照。需要设置一下webpack.config.js的devtool配置项:

module.exports = {
  devtool: "source-map",
}

网络 Network

在这里模块,我们可以查看网站的所有请求,如http请求,图片,websocket等等,不需要我们在代码里打印核对返回的数据对不对,和后端配合的时候,可以直接看这里即可,而且可以根据你的请求查看速度和占用,可以利于我们优化网站的加载速度,以及网络这里可以看到别人网站的一些素材和接口。

查看详细的请求如请求头、状态,返回的数据等等

查看图片的地址等等:

模拟不同网络效果:

应用程序 Application

这一模块主要是看你的网页存储的数据,这一块用过session和cookie应该都比较熟悉,项目没用到的也不需要了解,就不多做介绍了。

性能 Performance

这里主要是可以看到网站的性能表现,每一帧加载的内容,加载速度,以及展示你的统计数据

我们还可以设置cpu的性能和网络性能(3g、2g)等情况下的运行情况

大家可以访问:https://googlechrome.github.io/devtools-samples/jank/ 然后打开性能模板,点击左上角录制按钮进行分析
这里我增加了很多方格,然后可以看到每一帧都红了,说明有问题

然后我们点击下方的函数调用,查看具体代码:

然后会进入代码部分,可以看到导致问题的代码然后进行解决:

此外,我们除了观察帧数区域的变化,我们还可以打开fps相关信息,如下图,更多工具中点击绘图(render)

勾选帧的统计信息,也可以看到网站的刷新率,太低的话说明网页的效果不是很好,一般60hz以上。

LightHouse

性能模块已经是比较详细的了,LightHouse为我们提供了一个网页的报表,可以快速评估你的网站,并且给出一些指导意见

结尾

好了今天就介绍这么多了,都是前端的干货,也是我学习字节跳动课程的知识,前端要学的东西太多了,不过也是非常有意思的。深度学习、前端开发、后端开发、客户端开发都可以用JavaScript开发,可以玩的东西非常多,好了,这里是GIS宇宙,我们下期再见~

本人其他平台账号:

  • 微信公众号:GIS宇宙
  • CSDN:GIS_宇宙
  • 知乎:GIS宇宙
  • 掘金:GIS宇宙
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在进行TV页面前端调试时,可以按照以下步骤进行: 1. 检查网络连接:确保网络连接正常,确保能够正常访问页面所需的资源文件。如果出现网络问题,可能导致资源文件加载失败或渲染异常。 2. 检查浏览器兼容性:TV页面往往需要在不同的浏览器上进行测试。在调试过程中,确保所使用的浏览器版本与目标用户所使用的版本相符。如果存在兼容性问题,可以尝试使用浏览器开发者工具进行模拟。 3. 检查HTML结构:通过检查HTML结构,确保标签嵌套正确,并且所有标签都已正确闭合。可以使用浏览器的开发者工具查看DOM结构,并进行修改和调试。 4. 检查CSS样式:检查CSS样式表是否正确引入,并确保样式定义与所需一致。可以通过浏览器开发者工具查看元素的样式,并直接修改样式进行调试。 5. 检查JavaScript代码:检查JavaScript代码是否存在语法错误或逻辑错误。可以使用浏览器开发者工具进行调试,在控制台查看错误提示或执行代码。 6. 检查图片和其他资源:检查页面中的图片、音频、视频等资源是否正确引入和加载。可以通过浏览器开发者工具查看资源的网络请求和加载状态。 7. 添加调试代码:可以通过在代码中添加console.log语句或使用浏览器开发者工具的断点功能,来跟踪代码的执行流程并输出调试信息。 8. 验证用户输入和交互:对于涉及用户输入和交互的功能,需要验证输入的合法性并检查交互的响应是否符合预期。 总结:在TV页面前端调试过程中,需要检查网络连接、浏览器兼容性、HTML结构、CSS样式、JavaScript代码、图片和其他资源、用户输入和交互等方面的问题,并使用浏览器开发者工具进行调试和跟踪,以确保页面正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS_宇宙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值