更新时间:2024-04-19 GMT+08:00
分享

前端调试方法

查看console.log

通常我们遇到BUG,第一直觉肯定看console的报错信息,这种报错,错误原因和报错位置一目了然,很方便就定位到出问题的代码,console.log简单实用,简单的缺陷还是可以通过这种方法定位的,生产环境利用webpack去掉,就不会影响性能方面。

图1 console报错

全局查找

可以根据报错关键字定位问题,一般是dom元素的idclassname或者页面中出现的唯一性的中文汉字,搜索就可以直接定位到代码。

调用堆栈

堆栈是一个数据结构,每一个函数调用时都会将函数的指针和参数值保存到堆栈中,后进先出,最后调用的函数最先出栈。

可以通过打断点,查看Chrome开发面板的sources的call stack,可以查看追溯到源代码的位置,这个特别适合console报错位置不明确的情况(比如报错指向vue.esm.js)。

图2 代码追溯

分析代码

分析代码最常用的就是断点,一步步调试查看结果,定位问题。

断点

  1. 直接在代码里Debugger。

    在代码运行到该处就能触发断点,这对于Sources面板来说不容易寻找源码中的断点。

  2. Sources源码中加断点。

    这种打断点非常方便,但有时候没那么容易找到源码。

  3. Dom修改时加断点。
    图3 Dom断点
  4. Ajax请求断点。
    图4 Ajax断点
  5. 异常时断点。
    图5 异常断点

调试代码

调试代码最好保持本地环境和线上环境一致,这样基本保证修改缺陷不会被测试验证不通过。那怎么保持本地环境和线上保持一致呢?

  1. Vue CLI的本地代理功能,在配置文件devServer.proxy中配置反向代理,这种方式最好弄一个网站作为中介代理,开发的时候只需要修改网站上的配置,本地服务不用重复启动。
  2. 自己搭建Nginx反向代理,效果同上。
  3. 后端接口设置Access-Control-Allow-Origin,利用cors跨域本地直接访问线上数据,这种方法最方便,但需要后端同事配合。
  4. 使用Fiddler AutoResponder功能,直接把服务器重定向到本地目录(需要编写一个正则表达式),修改本地文件刷新浏览器就能看的修改效果。
  5. 使用Chrome DevTools的Overrides功能,把服务器的文件映射到本地,可以直接sources面板中修改文件中的方法,这种最适合调试jsp这种不用webpack压缩的老项目。
分享:

    相关文档

    相关产品