Firebug中的console tab使用总结

Firebug对于Web开发人员来说,已经成为了不可或缺的工具,但是在我日常的工作中,常常感觉还没有能够深刻的挖掘出她的潜力,今天花了点时间仔细研究了Console和命令行的使用在提高工作效率方面的作用,

记下来和大家分享一下.

Firebug一共有Console,HTML,CSS,Script,DOM,NET六个Tab,今天着重说一下Console的用法。

其实我们对于Console应该非常熟悉,因为这里是Firebug给出各种信息的窗口,而这也正是Console的主要用途,日志记录(Logging)。

除此之外,Console还提供了通过命令行方式来调试Javascript的方法。下面就来学习一下Console的用法。

1、Firefox的日志记录(Logging in Firefox)。

通过Console的记录方法,我们可以不再使用烦人的alert或者document.write方法来进行调试。

Firebug提供了五种日志的类型:

    console.log:记录一行信息,无任何图标提示;

    console.debug:记录一行信息,带超链接,可以链接到语句调用的地方;

    console.error():向控制台中写入错误信息,带错误图标显示和高亮代码链接;

    console.info():向控制台中写入提示信息,带信息图标显示和高亮代码链接;

    console.warn():向控制台中写入警告信息,带警告图标显示和高亮代码链接;

    consle打印字符串支持字符串替换,使用起来就像c里面的printf(“%s",a),支持的类型包括:

    %s        string,字符串

    %d,%i    整型

    %f        浮点

    %o        对象

    如果使用%o的话,对象就会用绿色的超链接表示出来,单击后会将你带到DOM视图。

2、分组(Grouping)。

    如果某一类的信息特别多时,分组就有利于逻辑的划分。

    使用上很简单,参见代码。

            function consoleGroup(){

                var groupname = "Group 1";

                console.group("Message group %s", groupname);

                console.log("This is the 1 message in %s", groupname);

                console.log("This is the 2 message in %s", groupname);

                console.log("This is the 3 message in %s", groupname);

                console.groupEnd();

                goupname = "Group 2";

                console.group("Message group %s", goupname);

                console.log("This is the 1 message in %s", goupname);

                var subgroupname = "Sub group 1";

                console.group("Message group %s",subgroupname);

                console.log("This is the 1 message in %s", subgroupname);

                console.log("This is the 2 message in %s", subgroupname);

                console.log("This is the 3 message in %s", subgroupname);

                console.groupEnd();

                console.log("This is the 2 message in %s", goupname);

                console.groupEnd();

            }

3、console.dir和console.dirxml

    console.dir可以将一个对象的所有方法和属性打印出来,这个方法无疑是非常有用的,我们不再需要object.toString这样的方法支持了,只要有firebug,查看对象也变得很轻松

    同时,我们也可以将页面中的元素作为一个对象打印出来,但是你要小心,因为这将输出众多的信息,可能你会迷失在繁杂的信息中而找不到自己需要的条目。

    我们可以通过分组将这些大量的信息放入一个分组中,这样可以在逻辑上更清楚一些。

            function consoleDir(){

                function Car(){

                    this.Model = "Old Model";

                    this.getManu = function(){

                        return "Toyota";

                    }

                }

                var objCar = new Car();

                console.dir(objCar);

                console.dir(zoo);

                var groupname = "Css Style";

                console.group("The button Style", groupname);

                console.dir(document.getElementById('consoledir').style, groupname);

                console.groupEnd();

            }

    console.dirxml    打印出HTML元素的XML表示形式.

4、断言(console.assert())。

    console.assert()可以用来判断一个表达式是否正确,如果错误,他就会打印错误信息在控制台窗口中。

5、追踪(console.trace())。

    console.trace()是一个非常有趣的功能。我们先来看看官方的解释:打印Javascript执行时刻的堆栈追踪。

    这个函数可以打印出程序执行时从起点到终点的路径信息。

    比如如果我们想知道某个函数是何时和如何被执行的,我们将console.trace()放在这个函数中,我们就能够的看到这个函数被执行的路径。

    这个函数在调试其他人的源代码时非常有用。    

6、计时(Timing)。

    console.time(timeName)可以用来计时,这个在我们需要知道代码执行效率的时候特别有用,就不用自己造轮子了。

            function consoleTime(){

                var timeName = "timer1";

                console.time(timeName);

                var a = 0;                

                for(var i = 0; i < 100; i++){

                    for(var j = 0; j < 100; j++){

//                        console.log('Hello world');

                        a = a + 1;

                    }

                }

                console.log("a = %d", a);

                console.timeEnd(timeName);

            }

7、Javascript分析器(Javascript Profiler)。

    我们可以通过代码console.profile('profileName')或者单击Profiler标签来进行Javascript代码执行的分析。这个功能有点类似于console.time(),可以帮助我们评估

    代码的表现,但是能够提供比console.time()更详细的信息。

    有三种方法可以调用Javascript profiler。一种是在代码中写入分析脚本,一种是单击profile标签,最后还可以在命令行下输入命令来执行。

    执行后,可以看到详细的输出结果,下面对各项进行一些说明:

    Function Column:显示调用的函数名称;

    Call Column:显示调用次数;

    Percent Column:显示消耗的时间比;

    Own Time:显示函数内部语句执行的时间,不包括调用其他函数的时间;

    Time Column:显示函数从开始到结束的执行时间;

    Avg Column:平均时间。Avg = Own / Call;

    Min & Max Column:显示最小和最大时间;

    File Column:函数所在的文件;    

8、其他的一些选项。

    在Console Tab的最右侧有一个Options的选项,在这里可以自己定义需要显示的错误,其内容很好理解,这里就不多说了。

    有一点就是Firebug1.3以后,多了

    Show Chrome Errors

    Show Chrome Message

    等几个选项,这几个选项还没有验证过其具体的作用,哪位知道的可以共享一下。

[参考资料]

1、Firebug Tutorial    http://michaelsync.net/2007/09/09/firebug-tutorial-logging-profiling-and-commandline-part-i

2、Firebug Tutorial    http://michaelsync.net/2007/09/10/firebug-tutorial-logging-profiling-and-commandline-part-ii

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

C# 获得设备usb信息

本文告诉大家如何获得设备的usb来进行判断是否有哪些usb和找不到usb可能是什么。

1701
来自专栏北京马哥教育

MongoDB多纬度监控方法详解

一、mongostat工具方法 mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如...

4735
来自专栏更流畅、简洁的软件开发方式

【实体类变形】—— 元数据(另类ORM) 描述字段的数据

     放假了,不知道有没有加班的,先祝大家国庆节快乐!      上次说得有点乱,“行列转换”这个词可能误导了大家,那么把这个词扔掉吧。我们重新开始。假设我...

22510
来自专栏斑斓

Redux框架reducer对状态的处理

前言 在react+redux项目里,关于reducer处理state的方式,在redux官方文档中有这样一段描述: 不要修改 state。 使用 Objec...

3755
来自专栏码洞

Java高阶必备之Netty基础原理

Netty是Java程序员通向高阶之路必须要过的门槛之一。干了几年的Java程序员发现业务开发似乎就是在SSH的世界里摸滚打爬的时候,会开始感到迷茫,难道程序员...

1042
来自专栏编程札记

深入golang之---goroutine并发控制与通信

本文章通过goroutine同步与通信的一个典型场景-通知子goroutine退出运行,来深入讲解下golang的控制并发。

1.3K7
来自专栏CRPER折腾记

Angular 2 + 折腾记 :(2)初步认识angular2,不一样的开发模式

想来想去,概念这些东西不怎么想讲,更多的是想讲点实战性的内容。 所以有些东西跳过去了,小伙伴们请去看官方文档哈;跳跃性的前进,写的不好多包涵。。。

1002
来自专栏编程思想之路

WiFiAp探究实录--功能实现与源码分析

Android虐我千百遍,我待Android如初恋。 ——————编辑于2017-08-02——————— wifi热点说的是wifiAp相...

1.7K9
来自专栏前端那些事

Express4.x API (三):Response (译)

Express4.x API 译文 系列文章 技术库更迭较快,很难使译文和官方的API保持同步,更何况更多的大神看英文和中文一样的流畅,不会花时间去翻译--,所...

17810
来自专栏别先生

基于jsp+servlet图书管理系统之后台用户信息插入操作

前奏:   刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长...

3886

扫码关注云+社区

领取腾讯云代金券