首页 / WXT 浏览器扩展框架教程 / 浏览器扩展到底是个啥

WXT 浏览器扩展框架教程

浏览器扩展到底是个啥

本教程共 45 篇 · 第 1 篇 · 更新于 2026-08-13 · 约 4 分钟阅读

浏览器扩展manifestMV3内容脚本权限零基础

本节目标:搞清楚浏览器扩展是什么、由哪些部分组成,弄明白 manifest、运行环境、MV2 与 MV3 这些基础概念,为后面学 WXT 打地基。

扩展是一组由浏览器装配起来的小程序

你每天用的广告拦截器、翻译助手、密码管理器,都属于浏览器扩展。普通网站只是一个页面,扩展则更像一组小程序:它们被浏览器装配在一起,协同完成一件事。

扩展能做的事很多:修改网页内容和行为、改变浏览器界面、与外部服务交互。比如在搜索结果旁显示评级、给网页加夜间模式、一键收集页面信息。

有一个关键点要先记住:这些小程序属于同一个扩展,却不共享同一个 window,也不能直接读取彼此的变量。跨环境协作要靠浏览器存储(storage)或消息 API(消息通信)。这个概念贯穿全书,如 §17 所述。

manifest.json:扩展的安装清单

浏览器凭什么知道一个扩展叫什么、有哪些文件、要什么权限?靠 manifest.json。它告诉浏览器:

  1. 扩展的名称、描述、版本和图标;
  2. popup(弹窗)、background(后台)、options(选项页)等入口文件在哪;
  3. 需要哪些权限、可以访问哪些网站。

Chrome 和 Firefox 的 manifest 字段略有差异。注意:用 WXT 开发时你几乎不手写 manifest,框架会结合配置和入口自动生成。想确认最终结果,要看开发或构建产物里的 manifest.json(如 §05 所述),而不是只看配置源码。

四种代码运行环境

环境能看到什么典型用途
扩展页面自己的 DOM、扩展 API弹窗、选项页、侧边栏、新标签页
background(后台)扩展 API,无可见页面事件监听、消息中转
content script(内容脚本)目标网页 DOM、部分扩展 API读取页面、往页面注入按钮
页面主世界网页自己的 JS 全局对象与页面脚本深度集成

内容脚本默认运行在隔离世界(isolated world):它能操作页面 DOM,但自己的 JS 变量不会和网页脚本混在一起。这是安全边界,不是 bug。

MV2 与 MV3:两代扩展平台

Manifest V2 是上一代,用常驻后台页面;Manifest V3 是当前主流,background 改成 service worker(服务工作线程)。最大的变化有两个:

  • service worker 可能随时休眠和重启,不是常驻进程;
  • 因此不能把必须长期存在的数据只放在后台的内存变量里,要写进存储(storage),如 §18 所述;
  • V3 对安全性要求更严,比如更严格的内容安全策略(CSP)。

WXT 一个项目可以同时产出 MV3 和 MV2 的构建,多数打包差异由框架处理,但浏览器 API 的支持度仍要分别验证(如 §35 所述)。

权限:扩展能力的门禁

权限分两类声明:

  • permissions:扩展 API 权限,如 storagetabs
  • host_permissions:允许扩展访问哪些网站来源。

权限会影响安装提示、商店审核和用户信任。开发时遵守最小权限原则:只申请功能必需的权限,matcheshost_permissions 用最小范围(如 §21 所述)。

术语速查

术语含义
扩展 / add-on浏览器扩展,中文俗称“插件”
manifest浏览器读取的扩展安装清单
入口点(entrypoint)WXT 识别并单独打包的入口
service workerMV3 的事件驱动后台环境
内容脚本(content script)注入匹配网页的扩展脚本
隔离世界内容脚本默认的隔离 JS 环境
HMR开发中修改代码后的热更新

小结

本节建立了扩展的整体模型:一个由 manifest 声明、多环境协作的程序集合。下一节我们看 WXT 这个框架凭什么能简化这一切。

上一篇
已经是第一篇啦
下一篇
WXT 是什么,凭什么选它