大家好,我是路飞写代码,前端工程师,一起分享知识,拥抱未来。

我从事前端开发工作已经五六年了,目前来说自己碰到的任何的前端问题,都能够轻松的解决掉,个人认为最主要的是自己掌握了各种debug技巧,能够快速定位,单步调试任何前端Javascript代码,压缩过的,未压缩过的代码其实都可以调试,这也是为什么前端做权限管理这块不安全的原因。今天的分享肯定也会让您眼前一亮,原来前端还可以这么玩。

debug技巧

刀耕火种的原始调试方式console

首先作为我们前端来说,接触到的第一种最原始的调试方式就是console这个工具了。相信每一个前端都会经常使用,那么我们首先来说一下这个基础的工具。

我估计目前大多数前端仍然还是只会用console.log进行调试,也仅仅是用console.log来进行输出一些变量的值,输出一段标记性提示。但是console并不仅仅只有这个用处,下面我分享几个有用的调试console技巧。

console分类输出console.log('文字信息');console.info('提示信息');console.warn('警告信息');console.error('错误信息');

这个比较简单,log、info、warn、error都有相应的提示图标展示效果,比如warn前面是一个黄色的三角叹号等。我们可以看一下效果:

分类输出效果

为什么要分类输出呢,这样我们其实是可以通过chrome这个调试工具进行过滤等级,比如我们只想显示错误的输出信息,屏蔽掉其他的输出,我们可以选择Filter旁边的下拉框,来进行显示哪些调试级别的信息。

过滤输出

console计时功能假如我们要测试一段前端代码耗时多长时间,这是一个很有用的工具,我们可以通过在计时代码开始前加入console.time('flag'),然后在要计时的代码结束后加入console.timeEnd('flag')。我们就可以知道这段代码耗时多长时间,进而我们找出可以优化的地方。

console.time("Chrome中循环10000次的时间");for(var i = 0; i < 10000; i++){}console.timeEnd("Chrome中循环10000次的时间");

我们来看一下chrome效果

console计时功能展示

console计次输出还是我们上面的例子,假如我们想得到循环次数,如何使用呢,当然用在这个场景可能不太合适,因为是已知循环多少次了,最合适的应用场景应该是当我们在按照某种条件进行筛选时,我们不知道有多少符合条件的,这时候用在这个地方最为合适。我们可以通过这种方式调试输出符合条件的有多少,不过我们还是打算用上面的示例做一个演示(循环次数缩减到5为了演示)

(function () { for(var i = 0; i < 5; i++){ console.count("运行次数:"); }})() //用到了匿名函数自运行知识点

我们再次看一下运行结果图:

console计数功能演示

console查看DOM节点我们可以在调试控制台输出我们的Dom文档树,通过console.dirxml(node),在终端我们就可以进行查看dom的结构构成,但是我并不推荐使用这个,因为个人感觉用处不大,有更好的工具可以替代,那就是Chrome自带的文档选择工具,这个更方便,也更加的直接清晰。

console.dirxml(document);

我们看一下效果如下:

查看节点功能演示

我们在看一下通过chrome自带的元素选择工具的动图,我们很容易发现这个工具更加的高效精准。

元素选择器的使用

我们看到可以很方便的选取自己想要查看的元素节点。我个人也推荐大家使用这种方式来查看元素dom结构。

console自定义输出样式虽然你读到这儿可能觉得这是一个鸡肋的功能,但是我还是要说一下这个自定义输出样式,其实作为一个码农,总要有一些追求,看到各种大神用的编辑器五颜六色,而自己的编辑器甚至输出全是清一色的黑白色,未免感觉不到成为一个大神需要怎样的境界。

编程大神

大神其实就是一些极致追求者,喜欢专研的比普通人更深入一层,喜欢所有东西做到极致。那么如果你能做到这些,你也可以成为大神。而这个就让他成为你变成大神的第一步吧,定制输出你的调试样式。

使用%c为打印内容定义样式,再输出信息前加上%c,后面写上标准的css样式,就可以为输出的信息添加样式了

console.log("%c自定义样式", "color: red; font-style: italic");console.log("%c自定义3D Text", " text-shadow: 0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15);font-size:5em");console.log('%c自定义彩虹文本', 'background-image:-webkit-gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );color:transparent;-webkit-background-clip: text;font-size:5em;');console.log('%c自定义背景颜色字号', 'color: #fff; background: #f40; font-size: 24px;');

我们来看一下效果炫酷不炫酷:

自定义输出样式

以上就是我们讲的console的妙用,没想到吧,console竟然还有这么多技巧,当然我们只是分享了一部分,还有很多其他有用的功能,等待你成为大神的那一天去发掘探索。

超级赛亚人进化之debugger利器

做前端如果说你目前还不知道有debugger这个技巧,那么可以说你根本没有真正的入门,也并没有静下心来去学习前端,这是成为一个大神必备的技巧,有了这个技巧,你调试起来会得心应手,在该断点时断点,不用费劲去单步调试到你想调试的那个代码,直接在那个调试代码的前一行,加上一句debugger;语句,然后运行程序,程序就会自动断点到你书写debugger;语句的地方。

(function (){ for(var i=0; i<5; i++){ if(i===3){ debugger; } }})() // 匿名函数自运行函数

下面我们看一下效果图,简直是一个神器存在,让我们的调试感到无比的快感。

debugger神器

这个debugger才是我们前端应该经常用到的调试技巧,它会让你的前端水平极大的提升,你可以直接调试一些框架代码。这样就能够研究透一些自己不理解的痛点,通过这种方式我们就能庖丁解牛般的将框架核心全掌握到,当然这个需要耐心和毅力。

如何去调试一些在线网站的压缩代码呢?

前面我们提到了压缩、未压缩的代码我们都可以进行调试,当然不是说大话,忽悠人,真的可以调试压缩代码,下面我就来将我的经验分享给大家。

这其间我曾经面试过一家公司,我向面试官说过我可以调试压缩过的在线网站的代码,面试官竟然蔑视的对我笑了,好像我在吹嘘自己,而且觉得我说的不真实。我能感觉到面试官那种极不相信的面容,最后我也没有进入那家公司,感觉面试官技术比我差了不少。

我们用一个普通的在线网页来进行说明,我们任意找一个普通网站,然后F12打开调试工具,我们切换到source面板,然后找到一个压缩代码,选中打开:

压缩代码

假如我们直接断点到这儿,在进行单步是不行的,因为所有的代码都在一行,如果单步整个都会断掉。这时候我们就需要对这个压缩后的代码进行格式化,而Chrome其实为我们提供了这个格式化工具,我们看到在打开的js文件面板下面有个大括号图标,这个就是格式化按钮,我们单击对压缩代码进行格式化。

对压缩代码的格式化

我们看到此时代码已经完全被格式化,这个时候我们就可以进行代码的调试了。就可以对这个压缩的代码进行断点调试。当然这个调试就比较难受,因为这是压缩过的,所有的名字已经不是一些见名知意的变量了,而是一些简单字母。所以调试起来比较麻烦,但是我们却可以调试它执行过程中的输出了什么,到某个阶段,每个变量的值是什么。进而我们可以找到我们想要的那个语句。

小结

至此我们的分享就到这儿了,前端调试技巧,只要你掌握了这些,你就可以无惧调试任何前端代码。当然这个也会成为你日后前端开发工作中的利器,帮助你胜任你的前端开发,也能助力你成为一个优秀的前端开发者。

我是路飞写代码,前端工程师,一起分享知识,拥抱未来。

前端调试debugf_前端应该掌握的这些Debug技巧,能够快速提升你的前端开发能力...相关推荐

  1. 前端组件化和模块化最大的区别是什么_7招提升你的前端开发效率

    前言 前端工程师其实是一个工作很杂的职位,除了要负责切图.写html/css/js外,还要解决一系列的浏览器兼容性.网页性能优化等问题,所以提高前端工程师的开发效率是势在必行的,也是前端工程化的体现. ...

  2. 前端学习(1754):前端调试值之监控页面重绘的技巧

  3. Android Studio Flutter 调试技巧 Flutter Inspector 提升你的维护开发效率 轻松定位复杂嵌套Widget代码位置

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...

  4. 后端接收到信息并返回了但是前端无响应_Bug的噩梦:前端调试必备的7个“大杀器”...

    全文共1527字,预计学习时长6分钟 图源:unsplash 应用程序漏洞,前端调试人员的秃头之源.如果您一直从事前端工作,就会知道修复应用程序漏洞有多么困难. 特别是使用JavaScript时,一个 ...

  5. 前端调试、兼容、适配指南与工具分享

    前端调试 1.对于新型创业公司来说,我们一般需要考虑以下的各种典型的浏览器: PC端: chrome.firefox.IE.360.搜狗 移动端: IE.360.UC.safari.安卓.QQ浏览器 ...

  6. 基于Chrome浏览器的前端调试

    文章目录 使用浏览器window对象的alert()方法 打开浏览器控制台设置断点 debugger 代码 利用Chrome控制台输出 console.log() console.table() co ...

  7. electron 打开调试_构建基于 iOS 模拟器的前端调试方案

    作者:imyzf 本文将为大家介绍自动化控制 iOS 模拟器的原理,为开发基于 iOS 模拟器的前端调试方案提供帮助. 我们在开发 iOS App 内的前端页面时,有一个很大的痛点,页面无法使用 Sa ...

  8. 手机Web前端调试页面之——Chrome DevTools(谷歌浏览器)的模拟手机调试

    Chrome DevTools(谷歌浏览器)的模拟手机调试 前言 在客户端开发中,由于使用手机app加载webview页面,客户端与前端经常会出现数据交互情况: 但是在手机中无法调试看到前端代码的步骤 ...

  9. 谷歌浏览器前端调试技巧01——使用F12清除缓存

    对于搞前端开发的人来说,前端调试是不可避免的,使用谷歌浏览器调试更是必备手段,今天主要是给大家分享一下清楚缓存的技巧.已经了解的朋友请移步. 为什么需要清理浏览器缓存? 我们通常说的WEB应用采用BS ...

  10. 【调试】前端调试,在电脑上调试手机浏览器

    前端调试,在电脑上调试手机浏览器 参照教程:http://www.tuicool.com/articles/mAzmq2 1.按教程说的装好 weinire 之后,复制下面代码到需要调试的html上: ...

最新文章

  1. 动态获取的图片当做背景,而且图片是小图
  2. C语言两种导入头文件的区别
  3. 用jenkins创建节点
  4. Kaggle新上比赛:Google AI发起地域包容性图像识别竞赛
  5. 盒马员工因工资单意外被同事看到,遭强制开除;微博被传大面积裁员、员工被要求主动离职,官方否认;豆瓣在截图中添加盲水印|雷峰早报...
  6. 为制造业构建Teams Power App 1:Dataverse入门
  7. 多多客DOODOOKE 1.x升级2.x指南
  8. linux 命令(7) df
  9. html空间登录页面制作,免费HTML网页空间(每月200 GB 流量托管静态网页超简单)...
  10. 计算机公式与函数乘法,excel里减法函数是哪个?-excel函数公式乘法
  11. 360极速浏览器插件不见了
  12. 手表频率测试软件,石英钟表测试仪是一款测量石英钟的灵活的工具
  13. 7-45 水果忍者 (30 point(s))
  14. win7记事本如何转换html,win7记事本程序在哪里 64位win7记事本程序怎么安装
  15. 和互联网公司服务器有关的一些情况
  16. java 获取图片像素_转:java提取图片中的像素
  17. 用于彩票3D的一个组合算法
  18. 教育知识与能力——简答题30题
  19. 用户故事与敏捷方法-第一章问题答案
  20. socket编程在windows和linux下的区别

热门文章

  1. gis数据与cad数据转换之间的关系
  2. hibernate 基本步骤 一
  3. CBMVC For Titanium Alloy 发布!
  4. java8 list统计(求和、最大、最小、平均)
  5. 并发编程学习之线程池
  6. 设计模式 (二十一) 策略模式
  7. 莽荒天下:玩家闯昆仑插旗邀战,第5张照片亮了
  8. @objc private 定义函数
  9. 磁盘设置压缩导致无法将数据库还原到该硬盘的问题
  10. 一个奇怪现象的分析过程