第一部分 — 基础知识 项目框架与文件布局

2.1 目的

稳定的布局使 MV3 更容易调试、审查和扩展。 本章提供了一个枯燥但可调试的基本结构。

2.2 使用场景 / 避免场景

使用场景: 开始一个新的扩展, 或者清理迁移工作。

避免场景: 探索单一 API。

2.3 最小化文件布局(推荐)

复制代码
my-ext/
  manifest.json
  sw.js
  popup.HTML
  popup.js
  options.HTML
  options.js
  content.js
  assets/

为什么这种布局有效:

  • sw.js 是你的协调者(路由 + 权限 + 状态)

  • UI 代码保留在 UI 文件中(DOM + 用户体验)

  • 页面逻辑保留在 content.js 中(DOM + 页面具体信息)

2.4 最小化 manifest.json

javascript 复制代码
{
  "manifest_version": 3,
  "name": "My Extension",
  "version": "1.0.0",
  "action": { "default_popup": "popup.HTML" },
  "background": { "service_worker": "sw.js", "type": "module" },
  "permissions": ["storage"],
  "host_permissions": [],
  "content_scripts": [
    {
      "matches": ["HTTPS://example.com/*"],
      "js": ["content.js"],
      "run_at": "document_idle"
    }
  ]
}

2.5 最小化 sw.js(以路由为主)

这段代码会引起接口的 566 错误,所以只好放截图

最小示例

一个最小的 MV3 安全异步消息处理程序(适合作为模板使用):

javascript 复制代码
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
  (async () => {
    if (msg?.type !== "PING") return;
    sendResponse({ ok: true });
  })().catch((err) => sendResponse({ ok: false, error: String(err) }));
  return true; // keep channel open for async
});

2.7 事项清单

  • sw.js 文件较小且主要负责路由和协调

  • UI 代码保留在 UI 页面;DOM 不在服务工作者(SW)中

  • 内容脚本执行页面工作并具有幂等性

  • 您可以从 manifest.json 解释所有权限

2.8 参考资料

相关推荐
jay神24 分钟前
基于 YOLOv8 的轴承缺陷检测(Web 版)
前端·人工智能·yolo
jay神32 分钟前
基于 YOLOv8 的森林火灾检测系统(Web 版)
前端·yolo
code2cat37 分钟前
HTML基础篇之第一张网页:从index.html到浏览器里的任务清单
前端·html
miss1 小时前
AI 改完不敢上线?OpenSpec 规约驱动开发实战
前端·代码规范·前端工程化
AiMan2 小时前
腾讯ima还是不可以导出左侧所有对话,只能单条导出,方法不对吗
前端
去伪存真2 小时前
并发量一高就装死?Agent 全链路“防猝死”手册
前端·agent
Moment2 小时前
AI 编程时代,聊聊我的 Mac mini 双屏桌面
前端·后端
AiMan2 小时前
先确认能不能一次把Microsofat Copilot所有内容打包一个文件导出
前端
总要学点什么2 小时前
第97篇:三维数据加载-城市建筑白模自定义着色器——让一条光带沿高度扫上去,快慢却由帧率说了算
前端·gis·webgl·cesium·着色器·空间分析·白模
上海懒图科技3 小时前
工厂厂区电子地图定位导航:厂区人车精准定位,安全合规双保障
前端·arcgis·vue