一个简单易用的记单词浏览器插件:在日常浏览网页时自动高亮生词,选词即可查询和加入词库,让背单词融入真实阅读场景。(讨论)
Meow Memorizing 是一个基于 WXT + React 的跨浏览器扩展,面向希望通过英文网页阅读积累词汇的用户。插件会把用户保存的单词同步到页面扫描流程中,在网页正文里自动标出已收藏单词;用户也可以直接选中页面上的新词,查看释义并加入自己的词库。
项目的核心设计目标是:使用门槛低、页面侵入少、匹配性能稳定。词匹配热点逻辑由 Rust 编译到 WASM,通过 Aho-Corasick 自动机一次扫描完成多词匹配,避免在大词表下用 JavaScript 对每个单词反复 indexOf 带来的性能退化。
https://chromewebstore.google.com/detail/ginipindgefglbpiaogadmdknaaojdhp?utm_source=item-share-cb

| 方向 | 技术 |
|---|---|
| 扩展框架 | WXT、Manifest V3 |
| 前端界面 | React 19、TypeScript、Ant Design、Tailwind CSS |
| 扩展能力 | @webext-core/storage、@webext-core/messaging |
| 高性能匹配 | Rust、WASM、aho-corasick、wasm-bindgen |
| 包管理与构建 | Bun、Vite、TypeScript |
| 代码质量 | Biome、oxlint、Cargo fmt、Clippy |
| 测试 | Vitest、Playwright e2e / benchmark、Cargo test |
整页扫描单词的热点计算下沉到 Rust 编译的 WASM 后端
(crates/wasm-matcher),用 Aho-Corasick 自动机一次扫描全部命中,
替代原先 O(文本 × 单词数) 的 indexOf 嵌套循环,匹配性能与单词表
规模无关。自动机按单词表缓存复用;WASM 以 base64 内联进扩展包,
不需要额外 fetch,也不需要配置 web_accessible_resources。
无 JS 兜底:不支持 WASM 的浏览器即不支持本插件。这个取舍可以让运行路径更简单,也避免维护两套匹配语义。
详见 crates/wasm-matcher/README.md 与 src/wasm/README.md。
WASM 初始化运行在 background service worker 中,content script 通过消息调用 matcher。这样可以避开宿主页 CSP 对 WebAssembly.Module 的限制,在 GitHub、X 等严格 CSP 页面上仍能稳定高亮。
scripts/build-wasm.sh 会用 release 模式构建 wasm32 目标,再由
scripts/inline-wasm.ts 把 .wasm 嵌入生成文件。扩展运行时不需要
再拉取额外的 WASM 资源,发布产物更容易在扩展商店和本地安装环境中保持一致。
安装依赖:
bun install
启动开发环境:
bun run dev
Firefox 开发环境:
bun run dev:firefox
生成 WASM:
bun run wasm
bun run build
产物位置:
.output/meow-memorizing-<version>-chrome.zip.output/meow-memorizing-<version>-firefox.zip.output/meow-memorizing-<version>-sources.zip.output/chrome-mv3-build之后谷歌浏览器开发者模式可直接安装已解压目录;商店或发布流程使用对应 zip。
构建会自动先生成 WASM (bun run wasm),需要 wasm32-unknown-unknown
目标与匹配版本的 wasm-bindgen-cli(当前固定为 0.2.122)。
bun run compile
bun run check:rust
bun run lint:rust
cargo test -p wasm-matcher
bun run test:e2e
说明:
bun run compile:TypeScript 类型检查。bun run check:rust:检查 WASM crate 的 wasm32 编译目标。bun run lint:rust:执行 cargo fmt --all --check 与 Clippy。cargo test -p wasm-matcher:运行 Rust matcher 单元测试。bun run test:e2e:运行 Playwright e2e 与基准测试。欢迎提交 issue、PR,或者在 Discussions 里交流使用体验和改进建议。
Code: (c) 2024 - Present - yebei199
License: GPL-3.0-only
License Text: View License Text