0%

使用Babel插入console.log到函数顶部

动机

由于我们每天都需要阅读陌生的源码,而debug的时候,又需要打断点,所以效率有些低,而且还需要寻找要在哪里打断点。

所以,借鉴GCC和LLVM都有对应的工具,他们可以在函数顶部和底部插入代码。

于是我就看下Babel这个库,我觉得它能操控JS的源代码,所以参阅了一些网络上的文章,并且把它实现了

npm库地址,这个库不完美。funlog完美,会继续完善一些常用操作

代码效果

babel-log

CSS调试的猜想(正则替换脚本)

根据上面JS的探索,可以从源码插入打印信息,然后在Chrome点击打印,直接跳到源代码位置。

  • 对于CSS文件:
    Chrome本身支持CSS Debug,并且点击就可以调到对应的文件。

  • 对于Sass或Less:
    可是Sass和Less是编译后的CSS行号会有点不一样,编译成CSS的过程,会有各种替换。

    CSS有一个属性Content,是可以添加标记内容的。我们在Sass或者Less源文件中,添加Content属性来标记CSS块在Sass或者Less中的位置,如果被HTML使用,就会Content就突出这个CSS来自于源文件中的第几行,是那个文件。

    由于CSS都是用花括号括起来的,所以我们可以对Sass或者Less进行处理,用正则匹配{并且获取它的行数,插入文件名+行数,这样就能起到标记这个CSS{}的作用。

当在Chrome Debug CSS的时候,选中DOM,就能看到一共引用CSS块在那个文件(Sass或者Less)的第几个行。
那些失效了,那些正在生效,这样就快速找到CSS在Sass或者Less中源代码的位置。如下图例子:

标记后的CSS(假设从Sass或者Less编译而来的):

CSS标记

在Chrome 中Debug CSS:

HTML标记

完善

上面,仅仅是想到在JS文件中插入代码进行记录执行路径。可是我们的代码一般都是Vue单文件,或者是React的JS或者TS。所以我就继续寻找资料,我的思路如下:

总结

反正,我们工程师尽力想出工具去应对开发过程中遇到的困难,大神肯定都搞过相关的工具,我们站在巨人的肩膀上。

请我喝杯咖啡~

欢迎加我微信交流~