🐞小白使用 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 分钟前
uni-app隐藏返回按钮
前端·uni-app
钢铁男儿19 分钟前
Python内置类型子类化的陷阱与解决方案
开发语言·前端·python
野盒子29 分钟前
前端面试题 微信小程序兼容性问题与组件适配策略
前端·javascript·面试·微信小程序·小程序·cocoa
Hilaku37 分钟前
为什么我不再追流行,而是重新研究了 jQuery
前端·javascript·jquery
兔子1213538 分钟前
浏览器内容缓存数据量大时的优化方案
前端
G等你下课40 分钟前
JavaScript 中 Promise 的深度解析:异步编程的革新之路
前端·javascript
啃火龙果的兔子1 小时前
安全有效的 C 盘清理方法
前端·css
海天胜景1 小时前
vue3 数据过滤方法
前端·javascript·vue.js
天生我材必有用_吴用1 小时前
深入理解JavaScript设计模式之策略模式
前端
海上彼尚1 小时前
Vue3 PC端 UI组件库我更推荐Naive UI
前端·vue.js·ui