Chrome 控制台实用指南

前言

Chrome浏览器我想是每个前端er必用工具之一吧,一部分缘由是它速度快,体积不大,支持的新特性也比其它浏览器多,还有一部分我想就是由于它的控制台功能强大了吧,说它是神器一点也不过度,很方便。但其实不少开发者并无用出控制台的精髓,只是使用简单的console.log();其实控制台功能远远不止这么简单哦。css

console.clear

console.clear();清空控制台,这个应该和console.log知名度同样高吧。前端

console.log家族

先简单介绍一下chrome的控制台,打开chrome浏览器,按f12就能够轻松的打开控制台程序员

这里写图片描述

若是你是一位开发者,我想console.log确定是常用的了,咱们主要看看console.log的几个兄弟:web

1.console.log ('普通讯息')

2.console.info ('提示性信息')

3.console.error ('错误信息')

4.console.warn ('警示信息')

控制台

你们都会用log,但不多有人可以很好地利用console.error,console.warn 等将输出到控制台的信息进行分类整理。他们功能区别不大,意义在于将输出到控制台的信息进行归类,或者说让它们更语义化。chrome

若是再配合console.group 与console.groupEnd,能够将这种分类管理的思想发挥到极致。这适合于在开发一个规模很大模块不少很复杂的Web APP时,将各自的log信息分组到以各自命名空间为名称的组里面。后端

console.group("app.bundle");
console.warn("来自bundle模块的警告信息1");console.warn("来自bundle模块的警告信息2");
console.groupEnd();

console.group("app.bundle");
console.log("来自bundle模块的信息1");console.log("来自bundle模块的信息2");
console.groupEnd();

这里写图片描述

这样的控制台信息看上去就一目了然了,就不用再为了找这是属于那一行代码输出的再翻一遍源码了。数组

另外,console.log家族还给咱们提供了一个的API:第一个参数能够带一些格式化指令,好比%c,\n;看下面这个炫酷的效果:浏览器

console.log('%chello world', '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;');

这里写图片描述

固然,图片也是能够的,读者能够自行尝试,修改上述代码便可。app

另外,console.log() 接收不定参数,参数间用逗号分隔,最终会输出会将它们以空白字符链接。chrome-devtools

这里写图片描述

console.table

看着这种“黑魔法”是否是有种坑分的感受呢,其实还不止哦!console.table可让咱们输出表格,示例:

var data = {code:200,content:[{'品名': '杜雷斯', '数量': 4}, {'品名': '冈本', '数量': 3}]};
console.table(data.content);

这里写图片描述

有的时候后端传回来一大串数据,是否是以为直接console.log或是经过抓包工具查看都会让人晕头转向呢,这个时候正事console.table发挥做用的时候了,以表格的形式呈现数据,天然一目了然。

console.assert

var isDebug=false;
console.assert(isDebug,'开发中的log信息。。。');

当你想代码知足某些条件时才输出信息到控制台,那么你大可没必要写if或者三元表达式来达到目的,cosole.assert即是这样场景下一种很好的工具,它会先对传入的表达式进行断言,只有表达式为假时才输出相应信息到控制台。

这里写图片描述

console.count

除了条件输出的场景,还有常见的场景是计数。

当你想统计某段代码执行了多少次时也大可没必要本身去写相关逻辑,内置的console.count能够很地胜任这样的任务.

这里写图片描述

console.dir

将DOM结点以JavaScript对象的形式输出到控制台,而console.log是直接将该DOM结点以DOM树的结构进行输出,与在元素审查时看到的结构是一致的。不一样的展示形式,一样的优雅,各类体位任君选择反正就是方便与体贴。

console.dir(document.body);
console.log(document.body);

这里写图片描述

console.time & console.timeEnd

输出一些调试信息是控制台最经常使用的功能,固然,它的功能远不止于此。当作一些性能测试时,一样能够在这里很方便地进行。好比须要考量一段代码执行的耗时状况时,能够用console.time与 console.timeEnd来作此事。

console.time("Array耗时");
var array= new Array(10000000);
for (var i = array.length - 1; i >= 0; i--) {
    array[i] = new Object();
};
console.timeEnd("Array耗时");

这里写代码片

当想要查看CPU使用相关的信息时,可使用console.profile配合 console.profileEnd来完成这个需求。
这一功能能够经过UI界面来完成,Chrome 开发者工具里面有个tab即是Profile。使用方法和console.time基本同样,其实time开发者工具里也有个tab就是timeline。关于console.prefile博主就不作多余的介绍了。想要作更多了解的读者能够看这里

$

讲真,米国程序员们真的很喜欢money啊(谁又不是呢),看看PHP就知道了,满屏的$。而在Chrome的控制台里,$用处一样是蛮多且方便的。

2+2//回车,再
$_+1//回车得5

上面的$_须要领悟其奥义才能使用得当,而$0~$4则表明了最近5个你选择过的DOM节点。

什么意思呢?在页面右击选择审查元素,而后在弹出来的DOM结点树上面随便点选,这些被点过的节点会被记录下来,而$0会返回最近一次点选的DOM结点,以此类推,$1返回的是上上次点选的DOM节点,最多保存了5个,若是不够5个,则返回undefined。

这里写图片描述

另外值得一赞的是,Chrome 控制台中原生支持类jQuery的选择器,也就是说你能够用$加上熟悉的css选择器来选择DOM节点,多么滴熟悉。

$('body');
$$('div');

这里写图片描述

$(selector)返回的是知足选择条件的首个DOM元素。

剥去她伪善的外衣,其实$(selector)是原生JavaScript document.querySelector() 的封装。
同时另外一个命令$$(selector)返回的是全部知足选择条件的元素的一个集合,是对document.querySelectorAll() 的封装。

$x(path)

将所匹配的节点放在一个数组里返回

$x("//p");
$x("//p[a]");

这里写图片描述

$x("//p")匹配全部的p节点,$x("//p[a]");匹配全部子节点包含a的p节点

copy

copy(document.body)

而后你就能够Ctrl+v了。

注意:他不依附于任何全局变量好比window,因此其实在JS代码里是访问不了这个copy方法的,因此从代码层面来调用复制功能也就无从谈起。希望有天浏览器会提供相应的JS实现吧~这样咱们就能够经过js代码进行复制操做而不用再依赖Flash插件了。

keys & values

这是一对基友。前者返回传入对象全部属性名组成的数据,后者返回全部属性值组成的数组。具体请看下面的例子:

var tfboy={name:'wayou',gender:'unknown',hobby:'opposite to the gender'};
keys(tfboy);
values(tfboy);

这里写图片描述

monitor & unmonitor

monitor(function),它接收一个函数名做为参数,好比function a,每次a被执行了,都会在控制台输出一条信息,里面包含了函数的名称a及执行时所传入的参数。而unmonitor(function)即是用来中止这一监听。

function sayHello(name){
    alert('hello,'+name);
}
monitor(sayHello);
sayHello('damonare');
sayHello('tjz');
unmonitor(sayHello);

这里写图片描述

debug & undebug

debug一样也是接收一个函数名做为参数。当该函数执行时自动断下来以供调试,相似于在该函数的入口处打了个断点,能够经过debugger来作到,同时也能够经过在Chrome开发者工具里找到相应源码而后手动打断点。而undebug 则是解除该断点。而其余还有好些命令则让人没有说的欲望,由于好些均可以经过Chrome开发者工具的UI界面来操做而且比用在控制台输入要方便。

本博文依据Console API文档Commond API书写。

相关文章
相关标签/搜索