Chrome 插件开发指南

基于 Manifest V3 的 Chrome 扩展开发中文指南——从 Hello World 到上架 Chrome Web Store。

作者 David更新于

Chrome 扩展(Extension)是在浏览器里运行的小型程序:可以改网页、拦请求、加侧边栏、接快捷键,而不必 fork Chromium。本专栏面向有前端/JS 基础、没写过插件的开发者,全程使用 Manifest V3(MV3)——2024 年起新上架扩展的唯一标准。

本指南以 Chrome 128+、Chromium 系浏览器(Edge、Brave 等)为准。API 名称与官方 Chrome Extensions 文档 对齐。10 课实战完整源码已开源:github.com/davidapp/chrome-extension-demos,每个 Demo 目录均可直接在 chrome://extensions 加载验证。

学习路径

入门(扩展是什么、环境、第一个插件)
    ↓
Manifest V3(清单、Service Worker、Content Script、Popup)
    ↓
通信与存储(消息、chrome.storage、网络与 CORS)
    ↓
权限与安全(最小权限、CSP、host_permissions)
    ↓
进阶 API(Side Panel、Scripting、declarativeNetRequest)
    ↓
工程化(调试、测试、项目结构、上架商店)

章节目录

入门

  1. 扩展是什么 — 与网页、PWA、用户脚本的边界
  2. 开发环境准备 — Chrome、加载方式、目录结构
  3. Hello World — 最小可运行 MV3 扩展

Manifest V3

  1. manifest.json 概览 — 字段、版本、action、icons
  2. Service Worker — 后台脚本、生命周期、事件
  3. Content Scripts — 注入页面、隔离世界、run_at
  4. Popup 与选项页 — action popup、options_page、React 集成

通信与存储

  1. 消息传递 — runtime.sendMessage、长连接、与页面通信
  2. 存储 API — local / sync / session,配额与迁移
  3. 网络与 CORS — fetch、host_permissions、跨域限制

权限与安全

  1. 权限模型 — permissions、optional_permissions、最小权限
  2. 内容安全策略 — extension_pages CSP、eval 禁令

进阶 API

  1. Side Panel — 侧边栏 UI、与 Tab 联动
  2. Scripting API — 动态注入、executeScript、registerContentScripts
  3. declarativeNetRequest — 规则化拦截/重定向(替代 webRequest 阻塞)

工程化

  1. 调试 — Service Worker 调试、Content Script 断点
  2. 测试策略 — 单元测试、Puppeteer、CI
  3. 项目结构 — 构建、TypeScript、WXT/Plasmo 选型
  4. 上架 Chrome Web Store — 打包、开发者账号、审核要点

附录

  1. PWA 开发指南 — Web Manifest、离线缓存、与扩展的选型边界
  2. 油猴脚本开发指南 — Tampermonkey 元数据、GM API、迁移到扩展

适合谁

  • 会写 HTML/CSS/JS 或 TypeScript,想给浏览器加能力的开发者
  • 需要把现有 Web 能力「钉」在特定站点上的产品/工具作者
  • 想理解 MV3 与 MV2 差异、避免审核踩坑的维护者

写作原则

  1. 可运行优先——开源 Demo 仓库 提供 10 个完整可加载项目;专栏文章讲解原理与关键片段,完整 HTML/CSS/JS 以仓库为准。
  2. MV3 唯一——不教已废弃的持久 background page、webRequest 阻塞模式。
  3. 权限即设计——先问「最少需要哪些 host_permissions」,再写功能。

从 扩展是什么 开始,或已有基础直接上 实战第 1 课。

实战课程(配套开源仓库)

完整源码:davidapp/chrome-extension-demos(Chrome 116+,纯 HTML/CSS/JS,无需构建)。建议 clone 后按编号顺序学习:

git clone https://github.com/davidapp/chrome-extension-demos.git
cd chrome-extension-demos

在 chrome://extensions 开启开发者模式 → 加载已解压的扩展程序 → 选择对应课次文件夹(如 01-hello-popup)。每课目录内的 README.md 含逐步操作与课后练习。

课文章源码目录主题
01Hello Popup01-hello-popupMV3、Popup、CSP
02Content Script02-content-script隔离世界、scripting
03Service Worker03-service-worker后台事件、Badge
04消息传递04-message-passing划词翻译
05Storage API05-storage-apiTodo、onChanged
06Options Page06-options-page选项页、sync
07Context Menus07-context-menus右键菜单、Toast
08Side Panel08-side-panel侧边栏笔记本
09DNR09-declarative-net-request广告拦截规则
10Offscreen10-offscreen-document后台 TTS

也可在 GitHub 上 Download ZIP 后解压使用。专栏文章与仓库 README 互补:文章讲「为什么」与架构,仓库给「完整能跑」的实现。

本页目录