一个基于 chrome devtools 的 web 远程调试工具

289 天前
 plqqlp123

1. 前言

关于 web 远程调试,最近看到货拉拉的前端团队在这个领域上持续发力,开源了 PageSpy 项目,同时也发表了文章阐述了远程调试的使用场景,解决了很多痛点问题。

那这里我将介绍另外一种 web 远程调试的实现方案:devtools-remote-debugger

项目地址:https://github.com/Nice-PLQ/devtools-remote-debugger

先来看下远程调试的效果

为了方便演示,用单独窗口来模拟,动态图片比较大,可能需要点加载时间

2. 介绍

Chrome Devtools 是前端几乎每天都需要用到的开发调试工具,其功能强大,易用,使用场景多种多样,包括但不限于 node 、小程序开发等。devtools 本身是开源的前端项目,很容易构建并集成,并与 Chrome DevTools Protocol(简称 CDP)协议进行对接。然后再通过 Javascript 按 CDP 的规范实现其协议,就可以实现远程调试 Web 的能力。

简单来说,实现远程调试需要具备三个条件:

  1. 通过原生 Javascript 实现CDP的协议规范,构建出 sdk.js(文件名称任意),并在被调试页面中加载该 js
  2. 构建出 Chrome Devtools 前端产物,并部署为web页面
  3. 实现websocket协议转发

Chrome Devtools 与目标页面之间的协议交互是用 websocket 来通信的。通过实现一个 websocket 转发的中间服务层,其作用是将 devtools 的协议消息转发给目标页面处理,或将目标页面的协议消息转发给 devtools 处理。大概的示意图如下

如何使用远程调试

  1. 根据项目 README 说明构建出sdk.js代码,该 SDK 是CDP的协议实现。然后在需要调试的 Web 项目 HTML 中加载该文件
  2. npm run start部署远程调试后端 Node 服务
  3. 建立连接后,在调试管理端打开 Chrome Devtools 开发者工具来调试目标页面

目前来说,已实现的功能如下,基本上能够覆盖常用的调试能力,同时也扩展了调试协议,实现了页面实时预览能力。

1 、调试管理端

2 、Element

3 、Console

4 、Source

5 、Network

6 、Application

7 、ScreenPreview (扩展协议)

更多信息请参阅项目说明,https://github.com/Nice-PLQ/devtools-remote-debugger

1688 次点击
所在节点    分享创造
6 条回复
musi
289 天前
支持 Chrome 插件吗
plqqlp123
288 天前
@musi 暂时没支持插件哈,不过可以考虑下在什么场景下会需要用到 chrome 插件的场景
musi
288 天前
@plqqlp123 前端的各种开发者工具,vue-devtools 场景不应该很多嘛
plqqlp123
288 天前
@musi 这个主要是远程调试的场景
yafoo
288 天前
看起来不错,明天试试。有一个 bug 存在好长时间了,年前用货拉拉那个试了试,最后没找到原因,明天用你这个再试试。
musi
288 天前
@plqqlp123 #4 远程调试场景为什么就不会存在 vue 开发者工具呢?官方还出了一个 electron 版本用于远程调试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1022204

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX