Chrome DevTools MCP:让 AI 助手直接操作浏览器开发工具

做前端开发的时候,经常遇到这样的场景:

  • 页面性能慢,想看看是哪里拖慢了加载?
  • 控制台报错了,想让 AI 帮忙分析错误原因?
  • 想自动化测试页面交互,但写 E2E 测试太繁琐?
  • 网络请求出问题了,想快速定位是哪个接口有问题?

以前这些问题都要手动打开 DevTools 查看,然后把信息复制粘贴给 AI。现在有了 Chrome DevTools MCP,AI 助手可以直接操作浏览器开发工具,自动分析问题。

官方博客地址:developer.chrome.com/blog/chrome...

github地址:github.com/ChromeDevTo...

Chrome DevTools MCP 能做什么?

核心能力概览

Chrome DevTools MCP 提供了 30+ 个工具,覆盖前端开发的主要场景:

页面控制类

  • 打开/关闭/切换页面标签
  • 导航到指定 URL
  • 调整页面尺寸(测试响应式)
  • 前进/后退历史记录

内容交互类

  • 点击元素(支持单击/双击)
  • 填写表单(输入框/下拉框/文本域)
  • 拖拽元素
  • 悬停触发效果
  • 上传文件

调试分析类

  • 获取页面快照(文本结构树)
  • 截图(全屏/元素/可见区域)
  • 执行 JavaScript 代码
  • 查看控制台日志
  • 分析网络请求

性能优化类

  • 录制性能追踪(Performance Trace)
  • 分析 Lighthouse 指标
  • CPU 节流模拟
  • 网络节流模拟(3G/4G/离线)

对话框处理

  • 处理 alert/confirm/prompt 弹窗

与传统工具的对比

能力 手动 DevTools Playwright Chrome DevTools MCP
学习成本 中(需要学 API) 低(自然语言交互)
自动化能力
性能分析 手动查看 需要编写代码 AI 自动分析
调试效率 需要截图描述 需要写断言 AI 直接看到问题
适用场景 开发调试 自动化测试 开发 + 调试 + 分析

Chrome DevTools MCP 的优势在于:把浏览器的能力直接给到 AI,不需要你写代码或手动操作

实战场景:前端开发中的典型应用

场景 1:性能分析 - 自动找出页面慢在哪里

传统做法:打开 DevTools → 点 Performance 标签 → 录制 → 刷新页面 → 分析火焰图 → 找瓶颈。

用 Chrome DevTools MCP:

javascript 复制代码
// AI 可以直接执行这些操作
1. 打开目标页面
2. 开始性能追踪(performance_start_trace)
3. 等待页面加载完成
4. 停止追踪(performance_stop_trace)
5. 分析 Core Web Vitals 和性能瓶颈

AI 助手会自动生成分析报告:

markdown 复制代码
性能分析结果:
- LCP (最大内容绘制): 2.3s  需要优化
- FID (首次输入延迟): 45ms  良好
- CLS (累积布局偏移): 0.15  需要优化

主要问题:
1. 首屏图片未优化(1.2MB)
2. JavaScript 主线程阻塞 800ms
3. 字体加载导致布局偏移

建议:
- 使用 WebP 格式压缩图片
- 延迟加载非首屏 JS
- 使用 font-display: swap

场景 2:调试错误 - 快速定位控制台报错

页面出错时,AI 可以自动查看控制台日志:

javascript 复制代码
// list_console_messages - 获取所有控制台消息
// get_console_message - 查看具体错误详情

实际效果:

arduino 复制代码
用户:"页面点击按钮后没反应,帮我看看"

AI 操作流程:
1. take_snapshot - 获取页面结构,找到按钮元素
2. click - 点击按钮
3. list_console_messages - 查看控制台
4. get_console_message - 查看错误堆栈

AI 分析结果:
"发现错误:Uncaught TypeError: Cannot read property 'data' of undefined
问题在 src/components/Button.jsx:23
原因:API 返回了 null,但代码没有做空值检查
建议:添加可选链操作符 response?.data"

场景 3:网络请求分析 - 找出慢接口

javascript 复制代码
// list_network_requests - 列出所有网络请求
// get_network_request - 查看请求详情(耗时、状态码、响应)

AI 可以自动分析:

markdown 复制代码
网络请求分析:
- 总请求数:45 个
- 慢请求(>1s):3 个
  1. /api/user/info - 2.3s (应该加缓存)
  2. /static/bundle.js - 1.8s (体积 3.2MB,太大了)
  3. /api/products - 1.2s (可以考虑分页加载)

优化建议:
- bundle.js 需要做代码分割
- 用户信息接口加 localStorage 缓存
- 产品列表改为虚拟滚动

场景 4:响应式测试 - 快速验证多端适配

javascript 复制代码
// resize_page - 调整窗口尺寸
// take_screenshot - 截图对比

AI 可以自动测试不同设备:

arduino 复制代码
用户:"帮我看看移动端显示是否正常"

AI 操作:
1. resize_page({width: 375, height: 812}) - iPhone X 尺寸
2. take_screenshot - 截图
3. take_snapshot - 检查布局结构
4. 分析是否有横向滚动条、元素溢出等问题

AI 反馈:
"发现问题:导航栏在移动端没有折叠,导致显示不全
建议:在 768px 以下使用汉堡菜单"

场景 5:自动化填表测试 - 验证表单逻辑

javascript 复制代码
// fill - 填写单个输入框
// fill_form - 批量填写表单
// click - 提交表单

实际应用:

arduino 复制代码
用户:"测试一下注册表单的验证逻辑"

AI 操作:
1. fill_form - 批量填写用户名、邮箱、密码
2. click - 点击提交按钮
3. wait_for - 等待验证提示出现
4. take_snapshot - 检查错误提示
5. list_console_messages - 看是否有报错

AI 测试报告:
✅ 空值验证正常
✅ 邮箱格式校验正常
⚠️ 密码强度提示位置偏移(CSS 问题)
❌ 提交后控制台报错 500(后端接口异常)

完整工具列表

Chrome DevTools MCP 提供了 26 个工具,分为 6 大类别:

工具分类总览

类别 工具数量 主要功能
输入自动化 8 个 click、drag、fill、fill_form、handle_dialog、hover、press_key、upload_file
导航自动化 6 个 close_page、list_pages、navigate_page、new_page、select_page、wait_for
仿真工具 2 个 emulate(网络/CPU)、resize_page
性能分析 3 个 performance_analyze_insight、performance_start_trace、performance_stop_trace
网络监控 2 个 get_network_request、list_network_requests
调试工具 5 个 evaluate_script、get_console_message、list_console_messages、take_screenshot、take_snapshot

核心工具详解

1. 页面内容获取

take_snapshot:获取页面的文本结构树

这个工具基于无障碍树(Accessibility Tree)提取页面结构,每个元素都有唯一的 uid 标识。

csharp 复制代码
# 返回示例
[1] heading "用户登录"
  [2] textbox "用户名" (value: "")
  [3] textbox "密码" (type: password)
  [4] button "登录"
  [5] link "忘记密码?"

用途:

  • AI 理解页面结构,找到需要操作的元素
  • 比截图更准确(不受视觉样式干扰)
  • 可以获取表单的值和状态

take_screenshot:截图

支持三种模式:

  • 可见区域截图(默认)
  • 全页面截图(fullPage: true
  • 指定元素截图(传入 uid
javascript 复制代码
// 截取整个页面
take_screenshot({ fullPage: true })

// 只截取某个组件(uid 从 take_snapshot 获取)
take_screenshot({ uid: "123" })

2. 元素交互

click / fill / hover / drag

基于 uid 操作元素,比传统选择器更可靠:

javascript 复制代码
// 传统方式(容易失效)
await page.click('#submit-button')

// DevTools MCP 方式(基于语义)
1. take_snapshot 找到按钮的 uid
2. click({ uid: "42" })

优势:

  • 不依赖 CSS 选择器(重构代码不会失效)
  • 基于语义理解("登录按钮"比 .btn-primary 更稳定)
  • AI 自动找到目标元素

3. 调试工具

evaluate_script:在页面执行 JavaScript

javascript 复制代码
// 获取页面数据
evaluate_script({
  function: "() => { return window.__INITIAL_STATE__; }"
})

// 修改页面状态(调试用)
evaluate_script({
  function: "(el) => { el.style.border = '2px solid red'; }",
  args: [{ uid: "123" }]  // 高亮某个元素
})

list_console_messages / get_console_message

支持按类型过滤:

  • log - 普通日志
  • error - 错误
  • warn - 警告
  • info - 信息
  • debug - 调试日志
javascript 复制代码
// 只看错误
list_console_messages({ types: ["error"] })

4. 网络分析

list_network_requests / get_network_request

可以按资源类型过滤:

  • document - HTML 文档
  • script - JavaScript 文件
  • stylesheet - CSS 文件
  • xhr / fetch - AJAX 请求
  • image / font / media - 资源文件
javascript 复制代码
// 只看 API 请求
list_network_requests({
  resourceTypes: ["xhr", "fetch"]
})

// 查看请求详情(耗时、状态码、响应体)
// request_id 从 list_network_requests 中获取
get_network_request({ reqid: 123 })

5. 性能分析

performance_start_trace / performance_stop_trace

启动性能追踪后,会记录:

  • 页面加载时间线
  • JavaScript 执行情况
  • 渲染性能指标
  • Core Web Vitals (LCP, FID, CLS)
javascript 复制代码
// 开始追踪并自动刷新页面
performance_start_trace({
  reload: true,
  autoStop: true  // 加载完成自动停止
})

// 查看分析结果
performance_stop_trace()

performance_analyze_insight

深入分析具体的性能问题:

javascript 复制代码
// 分析 LCP(最大内容绘制)慢的原因
performance_analyze_insight({
  insightName: "LCPBreakdown"
})

// 分析文档加载慢的原因
performance_analyze_insight({
  insightName: "DocumentLatency"
})

6. 环境模拟

emulate_network / emulate_cpu

模拟弱网环境和低性能设备:

javascript 复制代码
// 模拟 3G 网络
emulate_network({ throttlingOption: "Slow 3G" })

// 模拟 4 倍 CPU 降速
emulate_cpu({ throttlingRate: 4 })

可选的网络环境:

  • No emulation - 不限制
  • Offline - 离线
  • Slow 3G - 慢速 3G(下载 400KB/s)
  • Fast 3G - 快速 3G(下载 1.6MB/s)
  • Slow 4G / Fast 4G - 4G 网络

实际使用体验

优势

  1. 降低沟通成本

以前:

arduino 复制代码
你:"页面有个错误,帮我看看"
AI:"请提供错误信息和代码"
你:(截图,复制错误信息,找到相关代码)
AI:"看起来是 XXX 问题"
你:"改完了还是有问题"
(重复上述流程)

现在:

arduino 复制代码
你:"页面有个错误,帮我看看"
AI:(直接打开页面,查看控制台,定位代码,给出修复建议)
  1. 自动化繁琐操作

性能分析、网络请求查看这些操作,AI 可以自动完成并生成报告。

  1. 更准确的上下文理解

AI 可以"看到"页面的实际状态,不是基于你的描述猜测。

注意事项

  1. 隐私和安全(重要)

Chrome DevTools MCP 会访问页面内容,官方警告:"该工具将浏览器实例内容暴露给 MCP 客户端,允许它们检查、调试和修改浏览器或 DevTools 中的任何数据"

使用时要注意:

  • 不要在敏感页面上使用(银行、后台管理、邮箱、社交媒体)
  • API 密钥、用户数据、Cookie 可能被读取
  • 避免在启用远程调试的浏览器上访问敏感网站
  • 建议只在开发环境和测试页面使用
  • 使用完毕后关闭远程调试模式的浏览器
  1. 性能开销

频繁的快照和截图会消耗资源:

  • 复杂页面的 take_snapshot 可能较慢
  • 全页面截图会占用较多内存
  • 性能追踪会影响页面的真实性能
  1. 元素定位的稳定性

虽然基于 uid 比选择器更稳定,但页面重新加载后 uid 会变化:

  • 需要重新 take_snapshot
  • 不能跨页面使用 uid

与其他工具的配合

1. 结合 Playwright MCP

Chrome DevTools MCP 侧重"查看和分析",Playwright MCP 侧重"自动化测试":

markdown 复制代码
典型工作流:
1. Playwright MCP - 自动化操作(登录、填表、点击)
2. Chrome DevTools MCP - 验证结果(检查网络请求、控制台、性能)

分工明确:

  • Playwright:复杂的用户流程自动化
  • Chrome DevTools:调试和分析

2. 结合 Serena MCP

Serena MCP 可以保存分析结果:

markdown 复制代码
工作流:
1. Chrome DevTools MCP - 分析页面性能
2. Serena MCP - 保存性能报告到项目文档
3. 下次开发时,对比性能变化

3. 结合 Context7 MCP

查文档 + 实际验证:

markdown 复制代码
场景:学习新框架的最佳实践
1. Context7 MCP - 查询官方文档
2. Chrome DevTools MCP - 在实际项目中验证
3. 对比文档建议和实际表现

安装和配置

系统要求

  • Node.js v20.19 或更高版本
  • Chrome 当前稳定版或更新版本
  • npm 包管理器

1. 安装 Chrome DevTools MCP Server

推荐直接使用 npx(无需全局安装):

bash 复制代码
# 使用最新版本(推荐)
npx chrome-devtools-mcp@latest

# 或全局安装
npm install -g chrome-devtools-mcp

2. 配置不同的 AI 助手

Claude Code CLI(快速配置)

bash 复制代码
# 一键添加到 Claude Code
claude mcp add chrome-devtools npx chrome-devtools-mcp@latest

Claude Desktop

编辑配置文件(位置因系统而异):

json 复制代码
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"]
    }
  }
}

配置文件位置:

  • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows : %APPDATA%\Claude\claude_desktop_config.json
  • Linux : ~/.config/Claude/claude_desktop_config.json

Cline(VS Code 扩展)

在 VS Code 设置中添加 MCP 配置:

json 复制代码
{
  "cline.mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"]
    }
  }
}

Cursor

在 Cursor 设置中配置:

json 复制代码
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"]
    }
  }
}

Gemini CLI

bash 复制代码
# 添加到用户级配置
gemini mcp add -s user chrome-devtools npx chrome-devtools-mcp@latest

其他支持的 AI 助手

Chrome DevTools MCP 还支持以下工具(配置方式类似):

  • Copilot CLI 和 VS Code Copilot
  • Gemini Code Assist
  • JetBrains AI Assistant 与 Junie
  • Amp、Codex、Kiro、Qoder、Visual Studio、Warp、Windsurf

3. 连接现有的 Chrome 实例(高级配置)

如果需要连接到已经运行的 Chrome 实例(比如需要自定义认证):

json 复制代码
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "chrome-devtools-mcp@latest",
        "--wsEndpoint=ws://127.0.0.1:9222/devtools/browser/<id>",
        "--wsHeaders={\"Authorization\":\"Bearer YOUR_TOKEN\"}"
      ]
    }
  }
}

参数说明:

  • --wsEndpoint:WebSocket 连接地址
  • --wsHeaders:自定义请求头(用于认证等)
  • --browser-url:浏览器调试地址(可选)

4. 启动浏览器(调试模式)

Chrome DevTools MCP 默认会自动启动 Chrome,但在某些情况下需要手动启动:

bash 复制代码
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222

# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" \
  --remote-debugging-port=9222

# Linux
google-chrome --remote-debugging-port=9222

重要提示

  • 必须以调试模式启动浏览器,否则 MCP 无法连接
  • 默认端口是 9222,可以修改为其他端口
  • 启动后浏览器会显示"Chrome 正在受到自动测试软件的控制"

沙箱限制的解决方案

在某些 MCP 客户端(如启用了 OS 沙箱的 Claude Desktop)中,Chrome DevTools MCP 可能无法自动启动 Chrome。

解决方法 1:禁用沙箱(不推荐)

json 复制代码
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"],
      "dangerouslyDisableSandbox": true
    }
  }
}

解决方法 2 :手动启动 Chrome 并使用 --browser-url 参数(推荐)

bash 复制代码
# 1. 先手动启动 Chrome
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222

# 2. 配置 MCP 连接到手动启动的实例
{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "chrome-devtools-mcp@latest",
        "--browser-url=http://localhost:9222"
      ]
    }
  }
}

5. 验证配置是否成功

在 AI 助手中测试:

arduino 复制代码
你:"帮我打开 https://example.com 并截图"
AI:(如果配置成功,会执行操作并返回截图)

如果看到错误信息,检查:

  1. Chrome 是否正确启动并开启了远程调试
  2. 端口 9222 是否被占用
  3. MCP 配置文件格式是否正确
  4. Node.js 版本是否满足要求(v20.19+)

使用建议

开发阶段

快速调试

  • 发现控制台错误 → 让 AI 直接看日志分析
  • 网络请求慢 → AI 自动找出耗时接口
  • 样式不对 → AI 截图并定位 CSS 问题

性能优化

  • 录制 Performance Trace
  • AI 分析瓶颈并给出优化建议
  • 对比优化前后的数据

测试阶段

功能测试

  • AI 自动填写表单测试验证逻辑
  • 检查不同分辨率的显示效果
  • 模拟弱网环境测试加载体验

回归测试

  • 检查是否有新的控制台错误
  • 对比关键接口的响应时间
  • 验证核心流程是否正常

不适用的场景

  1. 复杂的自动化测试 → 用 Playwright MCP 更合适
  2. 需要精确断言 → 写单元测试更好
  3. 生产环境监控 → 用专业的监控工具(Sentry, Datadog)

Chrome DevTools MCP 最适合开发过程中的快速调试和分析

常见问题解答

Q1: Chrome DevTools MCP 和 Playwright MCP 有什么区别?

Chrome DevTools MCP

  • 侧重实时调试和分析
  • 查看控制台、网络请求、性能分析
  • 基于无障碍树的页面理解(更接近用户视角)
  • 适合开发过程中的快速排查

Playwright MCP

  • 侧重自动化测试和复杂操作
  • 更强大的页面操作能力(复杂选择器、等待条件)
  • 多浏览器支持(Chrome、Firefox、Safari)
  • 适合 E2E 测试和自动化场景

建议组合使用:Playwright 做自动化操作,DevTools 做结果验证。

Q2: 为什么会提示"无法启动 Chrome"?

最常见的原因是 MCP 客户端启用了沙箱限制。解决方法:

  1. 推荐 :手动启动 Chrome 并使用 --browser-url 参数连接
  2. 禁用沙箱(dangerouslyDisableSandbox: true)- 不推荐
  3. 检查 Chrome 是否已经在运行(关闭所有 Chrome 实例后重试)
  4. 确认 Node.js 版本 >= v20.19

Q3: 可以同时连接多个浏览器实例吗?

可以,通过不同的配置名称和端口:

json 复制代码
{
  "mcpServers": {
    "chrome-devtools-main": {
      "command": "npx",
      "args": ["chrome-devtools-mcp@latest", "--browser-url=http://localhost:9222"]
    },
    "chrome-devtools-test": {
      "command": "npx",
      "args": ["chrome-devtools-mcp@latest", "--browser-url=http://localhost:9223"]
    }
  }
}

然后分别在端口 9222 和 9223 启动 Chrome。

Q4: 性能追踪会影响实际性能吗?

是的。性能追踪本身会带来额外开销(通常 5-10% 的性能影响)。

建议:

  • 对比分析时保持相同的追踪配置
  • 关注相对性能变化,而非绝对值
  • 在接近生产环境的机器上进行性能测试

Q5: 能在无头模式(Headless)下使用吗?

可以,在启动 Chrome 时添加 --headless 参数:

bash 复制代码
# 无头模式启动
chrome --remote-debugging-port=9222 --headless=new

但注意:无头模式下无法看到页面实际渲染效果,适合自动化测试场景。

Q6: 如何处理需要登录的页面?

有几种方法:

  1. 手动登录后再测试:在调试模式的浏览器中手动登录,然后让 AI 操作
  2. 使用 Cookie :通过 evaluate_script 注入 Cookie
  3. 自动化登录:让 AI 自动填写登录表单
javascript 复制代码
// 注入 Cookie 示例
evaluate_script({
  function: `() => {
    document.cookie = "auth_token=xxx; path=/; domain=.example.com";
  }`
})

Q7: 支持移动端浏览器吗?

目前只支持桌面版 Chrome。如果需要测试移动端:

  1. 使用 emulate 工具模拟移动设备
  2. 使用 resize_page 调整为移动端尺寸
  3. 在 DevTools 中启用移动端用户代理
javascript 复制代码
// 模拟移动设备
emulate({
  device: "iPhone 14 Pro",
  viewport: { width: 390, height: 844 }
})

Q8: 如何优化性能和减少资源消耗?

建议:

  • 避免频繁的 take_snapshot(缓存页面结构)
  • 使用局部截图而非全页面截图
  • 按需获取网络请求(使用资源类型过滤)
  • 关闭不需要的标签页(close_page
  • 性能追踪完成后立即停止

总结

这些就是注意点 Chrome DevTools MCP的能力了

核心价值

  • 把浏览器开发工具的能力直接给到 AI
  • 不需要手动截图、复制粘贴错误信息
  • AI 可以"看到"页面的实际状态,更准确地理解问题

主要功能

  • 页面分析:快照、截图、执行脚本
  • 调试工具:控制台日志、网络请求
  • 性能分析:Performance Trace、Core Web Vitals
  • 自动化交互:点击、填表、拖拽

适用场景

  • 快速调试前端问题
  • 性能分析和优化
  • 响应式布局测试
  • 简单的功能验证

使用建议

  1. 开发环境使用:不要在生产环境或敏感页面使用
  2. 结合其他工具:Playwright 做自动化,DevTools 做分析
  3. 注意性能开销:复杂操作会消耗资源
  4. 保护隐私:避免在有敏感信息的页面使用

如果你经常需要调试前端问题、分析页面性能,或者想让 AI 更好地理解你的前端项目,Chrome DevTools MCP 是个很实用的工具。它让 AI 从"问答助手"变成了"能动手的开发伙伴"。


参考资源

官方文档和项目

  1. Chrome DevTools MCP 官方仓库 - 官方 GitHub 仓库,包含完整文档和配置示例
  2. Chrome DevTools Protocol - CDP 官方协议文档
  3. Model Context Protocol - MCP 协议官方网站

相关工具

  1. Playwright - 更强大的浏览器自动化工具
  2. Puppeteer - Google 官方的浏览器控制库
  3. Playwright MCP - Playwright 的 MCP 服务器

性能优化

  1. Web Vitals - Google 的核心性能指标说明
  2. Lighthouse - 自动化性能审计工具
  3. Chrome DevTools 性能分析指南 - 官方性能分析教程

AI 助手配置

  1. Claude Code 文档 - Claude Code 官方文档
  2. Cline 扩展 - VS Code 的 Claude 扩展
  3. Cursor 文档 - Cursor IDE 官方文档
相关推荐
前端一小卒12 小时前
我用 TypeScript 从零手写了一个 Claude Code,然后发现它的核心只有 30 行
前端·agent
铁皮饭盒12 小时前
用 Bun.cron 定时 7 月 7 日,为啥? 看图1
javascript
大圣编程13 小时前
Python中continue语句的用法是什么?
开发语言·前端·python
yuhaiqiang13 小时前
随手 vibecoding 的浏览器插件已经 6000 多次下载,聊聊他的产品设计
前端·后端·面试
之歆14 小时前
Vue商品详情与放大镜组件
前端·javascript·vue.js
再吃一根胡萝卜14 小时前
如何把小米 MiMo 接入 CodeBuddy,打造私有 Agent
前端
负责的蛋挞16 小时前
异步HttpModule的实现方式
java·服务器·前端
丹宇码农18 小时前
把 HLS 字幕玩出花:zwPlayer 如何让 M3U8 视频支持全文搜索、翻译与码率自适应
前端·javascript·音视频·hls·视频播放器
2501_9437823518 小时前
【共创季稿事节】猜数字游戏:二分法思维与交互式反馈
前端·游戏·microsoft·harmonyos·鸿蒙·鸿蒙系统