🐞小白使用 vscode 调试 axios

前言

以前学习源码,一般都是先把源码大致看一遍,然后如果遇到不清楚的变量或者功能,就会使用 console 来打印输出,优点是打印出来清晰易懂, 缺点就是如果太多的 console,反而会增加阅读成本。所以今天使用 vscode调试 来进行调试,主要目的是用来学习 调试,而非源码

为什么选择 axios 源码呢?

首先因为axios 本身不依赖于前端框架(比如vue/react),是一个比较纯粹的 js 项目

再者是因为 axios 在平时的项目中用的比较多,而且以前也写过关于 axios 的源码,比较了解流程

起步

下载 axios 源码

bash 复制代码
git clone https://github.com/axios/axios.git

如果只想拉取最新一版代码,不需要以前老版本,可以使用:

bash 复制代码
git clone --depth 1 https://github.com/axios/axios.git

下载完毕之后,先看看 readme.md 看看有没有什么关于启动的信息

如果没有,那么需要找到 package.json 文件,找到启动脚本,一般是 dev 或者是 start

如果此时直接启动 npm run start 的话,是启动不了的,我们进入 ./sandbox/server.js 文件中看看它是做了什么

server.js

server.js 中使用 http 模块创建了一个服务,然后监听 url的pathname ,通过匹配不同的 pathname调用不同的文件

当你使用 / 访问时,会把pathname 赋值为/index.html,然后后面匹配 /index.html,返回/client.html 文件

client.html 文件中,又引用了 axios.js,那么就会发送一个请求,则会匹配到 /axios.js 这个路径,然后返回 ../dist/axios.js

但是没有 ../dist/axios.js 这个文件,甚至没有 dist 这个文件,猜测可能是个打包文件,找到 package.json 中的 打包命令

这个命令使用了 gulprollup打包工具

其中 gulp clear 是为了清除构建过程中的临时文件和目录

cross-env NODE_ENV = production 将 Node.js 环境变量 NODE_ENV 设置为 production

🔗rollup -c -m 是一个 Rollup 的命令,-c 是表示用配置文件来运行 Rollup,-m 是用来生成 sourcemap

执行命令之后,会生成 dist文件

此时,我们再使用 npm run start 的话,在终端中就可以看到启动成功了!

在浏览器中打开 http://localhost:3000/

至此,axios 终于启动起来了,可以进行调试了

调试准备

在上文中访问 / 时,经过一阵跳转,会加载 ../dist/axios.js 文件

但是这个文件是一个打包后的文件,看右边的代码就知道,虽然可以调试,但是不太方便,我们需要映射到源文件中

为了方便调试,我们可以借助 vscode 调试工具的帮忙

创建一个 launch.json 文件,由于我使用的是 edge 浏览器,所以我选择 edge

使用谷歌浏览器的也可以选择 chrome

创建完毕之后launch.json 默认长这个样子

我们需要对其进行修改

🔗url 要改成你启动服务的端口号,webRoot 是用来解析 sourcemap

点击 运行与调试 按钮

会新出现一个 空白的浏览器 tab(因为request的是launch)

至此,调试准备已经完毕了,可以开始正式调试了

正式调试

那么应该在哪里打断点呢?

这就需要看这个 axios.js 对应的源文件是哪个了,我们知道 rollup 是用了自定义配置文件来打包的,我们找到这个配置文件

rollup.config.js

也就是 ./lib/axios.js 是源文件,所以可以在这个文件打断点,然后执行 F5

axios.js

点击之后,程序会在此处停住,同时在 vscode 会出现一排操作项

从左到右分别是:

  1. 跳转到下个断点
  2. 单行执行(不进入函数)
  3. 单步执行(进入函数内部)
  4. 单步退出(从函数中出来)
  5. 重新执行
  6. 停止调试

优点

当你使用调试工具时,所有变量可以通过 鼠标悬浮 的方式查看

defaults 变量

同时在左侧也可以看到各种变量,也可以添加 监视,来监视某一个变量的变化

如果你不想使用鼠标,也可以使用 调试控制台,只需要在最下方的输入框中输入你想查看的变量即可

结尾

今天分享的是 使用 vscode 调试 axios,通过使用 vscode 的自带的调试工具,确实要比自己打 console 要方便一点,更能看清楚代码流程,如果想要更快的阅读代码,选择调试也是一个不错的选择

相关推荐
并不会1 小时前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
衣乌安、1 小时前
【CSS】居中样式
前端·css·css3
兔老大的胡萝卜1 小时前
ppk谈JavaScript,悟透JavaScript,精通CSS高级Web,JavaScript DOM编程艺术,高性能JavaScript pdf
前端·javascript
低代码布道师1 小时前
CSS的三个重点
前端·css
耶啵奶膘2 小时前
uniapp-是否删除
linux·前端·uni-app
王哈哈^_^4 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
cs_dn_Jie4 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic5 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿5 小时前
webWorker基本用法
前端·javascript·vue.js
cy玩具6 小时前
点击评论详情,跳到评论页面,携带对象参数写法:
前端