🐞小白使用 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 要方便一点,更能看清楚代码流程,如果想要更快的阅读代码,选择调试也是一个不错的选择

相关推荐
让开,我要吃人了2 小时前
HarmonyOS开发实战(5.0)实现二楼上划进入首页效果详解
前端·华为·程序员·移动开发·harmonyos·鸿蒙·鸿蒙系统
everyStudy3 小时前
前端五种排序
前端·算法·排序算法
甜兒.4 小时前
鸿蒙小技巧
前端·华为·typescript·harmonyos
Jiaberrr8 小时前
前端实战:使用JS和Canvas实现运算图形验证码(uniapp、微信小程序同样可用)
前端·javascript·vue.js·微信小程序·uni-app
everyStudy8 小时前
JS中判断字符串中是否包含指定字符
开发语言·前端·javascript
城南云小白8 小时前
web基础+http协议+httpd详细配置
前端·网络协议·http
前端小趴菜、8 小时前
Web Worker 简单使用
前端
web_learning_3218 小时前
信息收集常用指令
前端·搜索引擎
tabzzz8 小时前
Webpack 概念速通:从入门到掌握构建工具的精髓
前端·webpack
200不是二百8 小时前
Vuex详解
前端·javascript·vue.js