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

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 文件较小且主要负责路由和协调

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

2.8 参考资料

相关推荐
陆枫Larry1 分钟前
Art Direction(艺术导向适配)
前端
Lee川2 分钟前
从“手工砌砖”到“魔法蓝图”:响应式驱动界面的诞生与实战
前端·vue.js
与虾牵手3 分钟前
Next.js 14 App Router 踩坑实录:5 个让我加班到凌晨的坑 🕳️
前端·javascript·面试
猩球中的木子3 分钟前
怎么集成安装VitePlus(Vite+)并使用
前端·vite·前端工程化
李昊哲小课7 分钟前
电商系统项目教程
开发语言·前端·javascript
smxgn27 分钟前
spring-boot-starter和spring-boot-starter-web的关联
前端
王中阳Go34 分钟前
2026年,前端这个岗位可能真的要消失了,但另一个正在崛起
前端
wing9844 分钟前
Vue3 接入 Google 登录:极简教程
前端·vue.js·google
weixin199701080161 小时前
货铺头商品详情页前端性能优化实战
java·前端·python
new code Boy1 小时前
NestJS、Nuxt.js 和 Next.js
前端·后端