尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
three-devtools 源码开发指南:从本地调试到 Chrome 网上应用店发布的完整教程
three-devtools 源码开发指南从本地调试到 Chrome 网上应用店发布的完整教程【免费下载链接】three-devtoolsthree.js devtools项目地址: https://gitcode.com/gh_mirrors/th/three-devtoolsthree-devtools是一款面向 three.js 的浏览器开发者工具扩展three.js devtools能在 DevTools 中可视化检查 3D 场景、渲染器、材质与纹理并支持直接修改参数。本文是一份从零开始的源码开发指南带你完成环境搭建、本地调试、构建打包最终把扩展发布到 Chrome 网上应用店Chrome Web Store与 Firefox 附加组件商店的完整流程。 先认识项目它是什么three-devtools 以面板Panel的形式嵌入浏览器开发者工具中。打开一个运行 three.js 应用的页面后你可以在three标签页里 浏览场景对象树Scene Graph 查看并实时修改材质、几何体参数️ 预览纹理漫反射、法线、粗糙度等 PBR 贴图⚙️ 调整渲染器与相机参数下面的示例场景就来自项目自带的演示页打开开发者工具即可用 three-devtools 检查其中的网格、材质与纹理项目官方说明文档DEVELOPMENT.md、README.md 一键安装克隆仓库并安装依赖只需 3 条命令即可开始git clone https://gitcode.com/gh_mirrors/th/three-devtools cd three-devtools npm install依赖项定义在 package.json 中核心依赖包括lit-elementWeb Components UI 框架、three0.137.0内置一份私有的 three.js 用于注入可视化、webextension-polyfill统一 Chrome/Firefox 扩展 API。 本地调试最快上手方法Chrome以已解压扩展方式加载打开chrome://extensions开启右上角开发者模式点击加载已解压的扩展选择项目根目录出现一条关于browser_specific_settings的警告属正常现象可忽略这是 Firefox 专用的 manifest.json 字段访问任意 three.js 页面可运行自带示例 examples/objects.html打开开发者工具即可看到three面板Firefox用 web-ext 自动调试npx web-ext runweb-ext会启动一个带扩展的 Firefox 实例改完 src/app/ 的界面代码后刷新面板即可看到效果。⚡ 调试刷新规则重要修改的文件需要做什么src/app/面板 UI刷新 DevTools 面板即可src/content/注入脚本在chrome://extensions重新加载扩展 刷新页面src/extension/通信管道重新加载扩展 刷新页面 目录结构源码都藏在哪儿src/ ├── app/ # DevTools 面板前端Web Components LitElement ├── extension/ # 通信管道content script / background / devtools 三端脚本 └── content/ # 注入到用户页面上下文、直接接触 three.js 实例的脚本 web_modules/ # 预构建的依赖模块由 pika/web 生成 examples/ # 自带演示场景 scripts/ # 构建与发版脚本关键文件速查面板入口src/app/index.html 与 src/app/index.js注册所有自定义元素根状态元素src/app/elements/AppElement.js负责整个应用状态与重渲染注入侧单例src/content/ThreeDevTools.jsobserve / select / update 等核心 API通信三端src/extension/contentScript.js → src/extension/background.js → src/extension/devtools.js数据序列化src/content/toJSON.js把 three.js 对象转成面板可渲染的数据 理解数据流消息如何跨越 4 个上下文这是理解源码最关键的一张心智地图。three.js 场景数据必须穿越4 个上下文注入脚本src/content/运行在页面用户上下文能摸到 three.js 对象Content Scriptsrc/extension/contentScript.js通过postMessage中转Backgroundsrc/extension/background.js按tabId把消息转发给对应面板DevTools 面板src/app/前端应用渲染而反方向面板 → 页面走得更直接面板通过chrome.devtools.inspectedWindow.eval()直接在用户上下文执行命令例如选中某个对象、修改某个数值。之所以要设计这么绕是因为纹理等大数据base64 字符串走 eval 轮询会严重卡顿只能走 port 消息通道。页面接入也很简单three.js 应用只需注册场景与渲染器if (typeof __THREE_DEVTOOLS__ ! undefined) { __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(observe, { detail: scene })); __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(observe, { detail: renderer })); } 构建打包3 个 npm 脚本要分清构建命令定义在 package.json 的 scripts 中实际逻辑在 scripts/build-dist.sh命令用途npm run build:deps用 pika/web 重新生成 web_modules/升级依赖后才需要npm run build:dist打包通用 zipFirefox/非 Chrome 浏览器npm run build:dist:chrome打包 Chrome 专用 zip自动移除browser_specific_settings字段npm run build:source打包未构建的源码zip供 AMO 源码审查使用 为什么 Chrome 要单独构建因为 Chrome 不认识 manifest 里的browser_specific_settings键脚本会先删掉该字段再打包消除警告。️ 版本号管理一条命令同步所有文件npm version patch # 或 minor / major这条命令会同时更新 package.json 与 manifest.json 中的版本号由 scripts/version.js 完成并自动打 git tag、推送到远端。发布前务必先执行这一步。 发布到 Chrome 网上应用店Chrome Web Store完整发布流程双端自测npx web-ext run测 Firefoxchrome://extensions加载已解压测 Chrome提升版本号npm version minorChrome 专用构建npm run build:dist:chrome产物在dist/目录上传登录 Chrome 开发者后台Chrome Developer Dashboard找到 Three.js Developer Tools 条目点击编辑上传dist/three.js_developer_tools_*.zip等待审核由于扩展申请了http://*/*与https://*/*等宽泛权限审核时间会稍长接受审核提示即可 顺便发布到 Firefox AMOnpm run build:dist生成主构建npm run build:source生成源码包登录 AMO 开发者后台上传dist/three.js_developer_tools_*.zip因使用 pika/web 打包了依赖按 AMO 源码提交政策还需上传dist/three-devtools-source.zip 新手常见坑位清单改完 src/content 没效果这类脚本是注入到用户上下文的必须重载扩展并刷新页面注入方式为什么奇怪Content Script 拿不到页面 JS 全局变量所以 contentScript.js 会动态插入script同步注入window.__THREE_DEVTOOLS__让页面代码尽早可注册依赖变了要重新 build:deps 吗要。web_modules/ 是预构建产物package.json依赖更新后执行npm run build:deps重新生成想跑示例场景项目自带 examples/ 下的多个演示页scenes.html、materials.html、large-data.html 等npm run serve后浏览器打开即可✅ 小结三步起步克隆 →npm install→chrome://extensions加载已解压数据流记住4 上下文注入 → content script → background → 面板发布前必做双端自测 npm versionbuild:dist:chromeChrome 上传 zip 到开发者后台即可Firefox 另需提交源码包掌握这条从本地调试到 Chrome 网上应用店发布的完整链路你就能独立迭代 three-devtools 这个 three.js 3D 开发工具了。祝开发顺利【免费下载链接】three-devtoolsthree.js devtools项目地址: https://gitcode.com/gh_mirrors/th/three-devtools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

RCE漏洞原理与防御:从命令注入到安全编码实践

RCE漏洞原理与防御:从命令注入到安全编码实践

1. 从“黑盒”到“白盒”:理解RCE的本质与威胁在网络安全领域,远程命令执行(RCE)是一个既令人着迷又令人警惕的词汇。它不像SQL注入那样有明确的“单引号”作为标志,也不像XSS那样直观地在页面上弹出弹窗。RCE更像是一…

📅 2026/10/24 9:18:49
彻底解决雪花算法ID在前端JavaScript中的精度丢失问题

彻底解决雪花算法ID在前端JavaScript中的精度丢失问题

1. 问题场景:一个看似简单却普遍存在的“幽灵”问题如果你是一名后端开发者,或者正在构建一个全栈应用,那么下面这个场景你一定不陌生:你精心设计了一套用户系统,后端使用雪花算法生成了唯一、有序且高性能的用户ID。这…

📅 2026/10/7 0:17:20
深入解析Windows系统文件修复:从sfc/scannow原理到DISM实战应用

深入解析Windows系统文件修复:从sfc/scannow原理到DISM实战应用

1. 从一次蓝屏说起:为什么我重新认识了sfc /scannow那天下午,我正在赶一个项目报告,电脑突然毫无征兆地蓝屏了。重启后,系统虽然能进桌面,但几个常用的专业软件图标变成了空白,点击后要么报错“找不到指定的…

📅 2026/9/8 0:20:38
MORE NEWS

更多资讯

📰

数据清洗技术演进:从批处理到智能化的实践历程

1. 数据清洗技术的起源与早期发展数据清洗这个概念最早可以追溯到上世纪60年代数据库技术诞生初期。当时IBM研究员Edgar F. Codd提出关系型数据库理论时,就已经意识到数据质量问题的重要性。我在早期参与银行系统建设时,就遇到过由于手工录入错误导致账户…

📰

STM32超声波测距接入ROS:二进制帧协议与避障避坑

简介:面向学习机器人操作系统与单片机嵌入式联调的学生和开发者,围绕超声波测距数据经串口在主机节点与微控制器之间传输、并据此下发动作指令这一典型实践场景,可用于机器人避障入门、课程设计以及软硬件联调参考。压缩包共58个文件&#xf…

📰

Scrapy-Redis构建高性能分布式爬虫实战

1. 项目概述:为什么需要分布式爬虫?在数据驱动的时代,网络爬虫已经成为获取公开信息的标准工具。但传统单机爬虫在面对海量数据抓取时,往往会遇到三个致命瓶颈:IP被封禁风险、单机性能天花板、以及数据去重难题。我在2…

📰

Raft协议详解:从原理到分布式系统实践

1. Raft协议的前世今生2014年,斯坦福大学的Diego Ongaro博士在其博士论文中提出了一种全新的分布式一致性算法——Raft。这个算法从诞生之初就带着明确的使命:成为比Paxos更易理解和实现的分布式共识解决方案。经过MIT 6.824等顶尖分布式系统课程的推广&…

📰

ZeroMQ企业级应用与性能优化实战指南

1. ZeroMQ在企业级应用中的核心价值ZeroMQ(简称ZMQ)作为一款高性能异步消息库,在现代企业系统中扮演着神经中枢的角色。不同于传统消息队列,它采用无中间件的设计模式,通过智能传输层自动处理网络拓扑变化。我在金融支…

📰

JDBC连接MySQL实战:从基础配置到性能优化

1. JDBC连接MySQL的核心价值与场景定位在Java生态中操作关系型数据库,JDBC(Java Database Connectivity)是绕不开的基础API。作为Java官方定义的数据库访问规范,它通过驱动程序实现与各类数据库的对话。而MySQL作为全球最流行的开…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬