对比
让我们对比一下 WXT、Plasmo(另一个框架)和 CRXJS(一个打包器插件)的功能特性。
概览
- ✅ - 完全支持
- 🟡 - 部分支持
- ❌ - 不支持
| 功能特性 | WXT | Plasmo | CRXJS |
|---|---|---|---|
| 持续维护 | ✅ | 🟡 [^n] | 🟡 [^m] |
| 支持所有浏览器 | ✅ | ✅ | 🟡 [^j] |
| MV2 支持 | ✅ | ✅ | 🟡 [^a] |
| MV3 支持 | ✅ | ✅ | 🟡 [^a] |
| 创建扩展 ZIP 包 | ✅ | ✅ | ❌ |
| 创建 Firefox 源码 ZIP 包 | ✅ | ❌ | ❌ |
| 一流的 TypeScript 支持 | ✅ | ✅ | ✅ |
| 入口点自动发现 | ✅ ^b | ✅ ^b | ❌ |
| 内联入口点配置 | ✅ | ✅ | ❌ [^i] |
| 自动导入 | ✅ | ❌ | ❌ |
| 可复用的模块系统 | ✅ | ❌ | ❌ |
| 支持所有前端框架 | ✅ | 🟡 [^c] | ✅ |
框架特定的入口点(如 Popup.tsx) | 🟡 ^d | ✅ ^e | ❌ |
| 自动化发布 | ✅ | ✅ | ❌ |
| 远程代码打包(Google Analytics) | ✅ | ✅ | ❌ |
| 未列出的 HTML 页面 | ✅ | ✅ | ✅ |
| 未列出的脚本 | ✅ | ❌ | ❌ |
| ESM 内容脚本 | ❌ [^l] | ❌ | ✅ |
| 开发模式 | |||
.env 文件 | ✅ | ✅ | ✅ |
| 打开浏览器并自动安装扩展 | ✅ | ❌ | ❌ |
| UI 热模块替换(HMR) | ✅ | 🟡 [^f] | ✅ |
| HTML 文件变更时重新加载 | ✅ | 🟡 ^g | ✅ |
| 内容脚本变更时重新加载 | ✅ | 🟡 ^g | ✅ |
| 后台脚本变更时重新加载 | 🟡 ^g | 🟡 ^g | 🟡 ^g |
遵循内容脚本的 run_at 设置 | ✅ | ✅ | ❌ [^h] |
| 内置封装 | |||
| 存储 | ✅ | ✅ | ❌ [^k] |
| 消息通信 | ❌ [^k] | ✅ | ❌ [^k] |
| 内容脚本 UI | ✅ | ✅ | ❌ [^k] |
| 国际化(I18n) | ✅ | ❌ | ❌ |
[^a]: 只能支持 MV2 或 MV3 其中之一,不能同时支持。
[^c]: 仅支持 React、Vue 和 Svelte。
[^f]: 仅支持 React。
[^h]: ESM 风格的加载器以异步方式运行。
[^i]: 所有入口点选项都在 manifest.json 中配置。
[^j]: 截至 v2.0.0-beta.23 版本支持,但 v2 稳定版尚未发布。
[^k]: 该 API 没有内置封装。但你仍然可以通过 chrome/browser 全局变量访问标准 API,或使用任何第三方 NPM 包。
[^l]: 开发中,进展缓慢。关注 wxt-dev/wxt#357 获取更新。
[^m]: 参见 crxjs/chrome-extension-tools#974
[^n]: 似乎处于维护模式,几乎没有维护者或功能开发活动(参见 wxt-dev/wxt#1404 (comment))