网易首页 > 网易号 > 正文 申请入驻

告别繁琐JS!Rust一键打造Chrome/Firefox插件的新时代

0
分享至

Oxichrome:纯 Rust 开发跨浏览器扩展,零 JS 手写超省心

各位技术小伙伴们,是不是还在为写浏览器扩展来回折腾 JavaScript,还要兼顾 Chrome 和 Firefox 的适配头大?今天给大家安利一个神仙工具 ——Oxichrome,直接用 Rust 语言开发浏览器扩展,编译成 WebAssembly,Chrome、Firefox 通吃,关键是全程不用手写一行 JS,开发效率直接拉满!



Oxichrome 是一款专为 Rust 开发者打造的浏览器扩展开发工具,核心就是让大家用熟悉的 Rust 语法,就能轻松开发出兼容 Chromium 系(Chrome、Edge、Brave)和 Firefox 的 Manifest V3 标准扩展,背后依托 wasm-bindgen 实现 Rust 到 Wasm 的编译,还结合了 Leptos 框架做响应式 UI,体验直接拉满。

用过的小伙伴都知道,它最香的地方就是把繁琐的开发流程全自动化了,不用再手动处理编译、生成清单、写 HTML/JS 垫片这些杂事,一行命令就能搞定所有,而且还能自动生成 Chromium 和 Firefox 的专属打包文件,跨端适配再也不用反复改代码。

五大过程宏,轻松实现扩展核心功能

Oxichrome 给大家准备了五个超实用的过程宏,直接注解就能实现扩展的各种核心功能,完全不用写复杂的底层代码,新手也能快速上手:

  • #[oxichrome::extension]:给结构体加个注解,就能定义扩展的名称、版本、权限这些元信息,比如 storage、tabs 权限,一行配置就搞定;
  • #[oxichrome::background]:标注一个异步函数,它就成了扩展的后台服务工作线程入口,扩展的后台逻辑全在这写;
  • #[oxichrome::on]:用来注册 Chrome 事件监听器,比如扩展安装、运行时触发的事件,异步函数就能处理,还能拿到事件详情;
  • #[oxichrome::popup]:把 Leptos 组件标注成扩展的弹窗 UI,用 Leptos 的响应式语法写界面,前端小伙伴也能快速适配;
  • #[oxichrome::options_page]:和 popup 同理,标注后就是扩展的设置页面 UI,同样基于 Leptos,写起来超顺手。

这五个宏会自动把 Rust 代码转换成 wasm-bindgen 导出内容,底层逻辑全封装,咱们只管写业务就行。

强类型 Chrome API 绑定,告别类型错误

开发浏览器扩展,离不开 Chrome 的各种 API,Oxichrome 提供了chrome.storage、chrome.tabs、chrome.runtime这些核心 API 的强类型绑定,用 Rust 的强类型特性,写代码时就能避免类型错误,不用再在运行时踩坑。

比如操作存储,直接用 oxichrome::storage 的 get、set、remove 方法,异步调用还能直接 await,返回值都是强类型的;操作标签页的话,query 查询、create 创建、send_message 发消息,全程都是 Rust 语法,用起来特别丝滑,再也不用对着 JS 的弱类型 API 反复调试。

Leptos 加持,响应式 UI 开发超轻松

Oxichrome 把 Leptos 框架集成到了一起,用来开发扩展的弹窗和设置页面。Leptos 是基于 Rust 的现代 Web 框架,和 React、Solid 这些前端框架的思路很像,支持响应式数据、组件化开发,而且没有虚拟 DOM,渲染效率超高。

写 UI 的时候,用 Leptos 的 view! 宏就能写类似 JSX 的语法,组件返回 impl IntoView 就行,前端开发者几乎不用学新语法就能上手,后端 Rust 选手也能快速实现漂亮的响应式界面,不用再和 JS/CSS 死磕。

极简 CLI 命令,开发打包一键搞定

Oxichrome 的 CLI 工具设计得特别简洁,几个命令就能覆盖从项目初始化到打包发布的全流程,新手也能秒会:

  • 新建项目:直接脚手架生成,项目里已经配好了 Oxichrome 依赖,不用手动改配置;
  • 构建 Chromium 扩展:默认命令直接打包,生成的文件在 dist/chromium 目录,直接在 Chrome 扩展页面加载已解压的扩展就能用;
  • 构建 Firefox 扩展:加个 --target firefox 参数,就会生成 Firefox 专属的打包文件,在 Firefox 的调试页面加载 manifest.json 即可;
  • 发布优化:加 --release 参数就能生成优化后的发布版本,体积更小、运行更快;
  • 清理文件:clean 命令一键删除 dist 目录,不用手动清理。

而且构建过程中,Oxichrome 会自动处理 Wasm 编译、清单生成、JS/HTML 垫片创建、静态资源复制,还支持可选的 wasm-opt 优化,把所有繁琐的步骤都包了,咱们只管专注写代码。

清晰的项目架构,易扩展易维护

Oxichrome 本身的项目架构设计得特别清晰,分成了多个核心模块,各司其职,也方便开发者理解和二次开发:

  • oxichrome:对外的重导出 crate,开发者直接依赖这个就行;
  • oxichrome-core:运行时核心,包含 Chrome API 绑定、错误类型、日志功能;
  • oxichrome-macros:就是咱们用到的那些过程宏的实现;
  • oxichrome-build:负责源码解析、清单和垫片生成;
  • oxichrome-cli:就是咱们用的 cargo oxichrome 命令行工具;
  • examples:还提供了计数器、颜色选择器这些示例扩展,直接参考就能写自己的项目。
打包输出结构清晰,跨端部署超方便

Oxichrome 的打包输出目录结构特别规范,Chromium 和 Firefox 的文件分开存放,不会混淆,部署的时候直接对应加载就行:

  • dist/chromium:Chromium 系扩展的所有文件,包含 manifest.json、后台 JS、弹窗 / 设置页的 HTML/JS,还有编译后的 Wasm 文件;
  • dist/firefox:Firefox 扩展的文件,清单会适配 Firefox 的要求,比如加入 gecko ID、适配后台脚本,其他文件和 Chromium 保持一致,不用额外开发。
基于 MIT 协议,自由使用无限制

Oxichrome 采用 MIT 开源协议,不管是个人开发还是商业项目,都能自由使用、修改和分发,完全没有限制,而且项目还在持续更新,最近还新增了 Firefox 目标支持和清理命令,生态一直在完善。

对于 Rust 开发者来说,Oxichrome 直接把浏览器扩展开发的门槛拉低了,不用再学习 JS 生态的各种工具,用熟悉的 Rust 就能搞定跨浏览器的扩展开发;对于前端开发者来说,这也是一个接触 Rust+Wasm 开发的好机会,依托 Leptos 的熟悉语法,轻松实现技术栈升级。

目前 Oxichrome 已经能满足日常的浏览器扩展开发需求,不管是写简单的小工具,还是复杂的功能扩展,都能轻松应对,感兴趣的小伙伴可以直接去 GitHub 上看看,上手试试就知道有多香了!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
烂番茄91%爆米花98%,《镖人》海外口碑出炉

烂番茄91%爆米花98%,《镖人》海外口碑出炉

扬子晚报
2026-02-21 19:47:53
华为手机基本走向没落了

华为手机基本走向没落了

月光作笺a
2026-02-21 06:06:45
斯诺克最新战报!赵心童拒绝连输3局,破百追到2-3,名将优势缩水

斯诺克最新战报!赵心童拒绝连输3局,破百追到2-3,名将优势缩水

刘姚尧的文字城堡
2026-02-22 05:11:54
老人骑车摔倒索赔22万后续:原告方已撤诉,女孩是否有责不应含糊

老人骑车摔倒索赔22万后续:原告方已撤诉,女孩是否有责不应含糊

蜜桔娱乐
2026-02-21 21:10:03
娜然敲开霍家门!十年低调相守赢过所有炒作

娜然敲开霍家门!十年低调相守赢过所有炒作

陈意小可爱
2026-02-21 22:50:31
斯诺克最新战报!赵心童长台失误,小钢炮单杆制胜,4-2冲赛点!

斯诺克最新战报!赵心童长台失误,小钢炮单杆制胜,4-2冲赛点!

刘姚尧的文字城堡
2026-02-22 05:33:14
皇马后卫赫伊森转发社媒,内容含明显辱华的种族歧视评论

皇马后卫赫伊森转发社媒,内容含明显辱华的种族歧视评论

懂球帝
2026-02-21 23:48:17
1-2大冷门!90分钟绝杀 13.5亿8连胜惨遭终结 榜首位置岌岌可危

1-2大冷门!90分钟绝杀 13.5亿8连胜惨遭终结 榜首位置岌岌可危

狍子歪解体坛
2026-02-22 03:28:22
至少在已经过去的25年里,中国的“财神”不是赵公明,而是WTO!

至少在已经过去的25年里,中国的“财神”不是赵公明,而是WTO!

细雨中的呼喊
2026-02-21 06:59:07
毛奇、李佩霞2026年近况公布,两人服刑结局给所有人提了醒

毛奇、李佩霞2026年近况公布,两人服刑结局给所有人提了醒

娱乐督察中
2026-02-21 03:23:47
机器人集体亮相春晚后:“假蔡明”被送给了真蔡明,“春晚版熊猫”拍出近6万元高价

机器人集体亮相春晚后:“假蔡明”被送给了真蔡明,“春晚版熊猫”拍出近6万元高价

红星新闻
2026-02-21 20:39:13
黄晓明公开回应“在澳门输掉十几亿”

黄晓明公开回应“在澳门输掉十几亿”

21世纪经济报道
2026-02-21 20:20:39
伊朗已经下定决心,抢在美国动手之前,把俄罗斯牢牢绑在战车上

伊朗已经下定决心,抢在美国动手之前,把俄罗斯牢牢绑在战车上

东极妙严
2026-02-20 15:17:46
谷爱凌:人们之所以对我有意见,是因为讨厌中国

谷爱凌:人们之所以对我有意见,是因为讨厌中国

懂球帝
2026-02-21 16:53:05
太嚣张!那艺娜被湖北官方列为劣迹艺人,团队硬刚:是地区黑公关

太嚣张!那艺娜被湖北官方列为劣迹艺人,团队硬刚:是地区黑公关

离离言几许
2026-02-21 14:46:36
不管手头存款有多少,请务必死磕这4条守财底线:1、不换车不装

不管手头存款有多少,请务必死磕这4条守财底线:1、不换车不装

小陆搞笑日常
2026-02-20 09:10:50
游客青海自驾被野牦牛拦路6小时,当地民警深夜驰援

游客青海自驾被野牦牛拦路6小时,当地民警深夜驰援

红星新闻
2026-02-21 18:10:16
灵与肉的深度共振:解锁“高潮”背后的生命密码

灵与肉的深度共振:解锁“高潮”背后的生命密码

精彩分享快乐
2026-01-14 19:12:37
去不了?俄伊军演尴尬收场,亚丁湾的中国军舰宁可干看着也不参加

去不了?俄伊军演尴尬收场,亚丁湾的中国军舰宁可干看着也不参加

解锁世界风云
2026-02-22 00:41:55
4金3银6铜!中国队创历史,奖牌榜混乱:金牌逼近日本 剩1夺金点

4金3银6铜!中国队创历史,奖牌榜混乱:金牌逼近日本 剩1夺金点

侃球熊弟
2026-02-22 05:43:15
2026-02-22 06:51:00
我不叫阿哏
我不叫阿哏
分享有趣、有用的故事!
277文章数 6415关注度
往期回顾 全部

科技要闻

智谱上市1月涨5倍,市值超越京东、快手

头条要闻

贝加尔湖7名遇难者身份全部确认 1家4口仅1人生还

头条要闻

贝加尔湖7名遇难者身份全部确认 1家4口仅1人生还

体育要闻

徐梦桃:这是我第一块铜牌 给我换个吉祥物

娱乐要闻

黄晓明澳门赌博输十几亿 本人亲自回应

财经要闻

一觉醒来,世界大变,特朗普改新打法了

汽车要闻

比亚迪的“颜值担当”来了 方程豹首款轿车路跑信息曝光

态度原创

房产
教育
艺术
数码
公开课

房产要闻

窗前即地标!独占三亚湾C位 自贸港总裁行宫亮相

教育要闻

高考地理中的河流凹凸岸

艺术要闻

他的肖像画和人体画,竟让人赞叹不已!

数码要闻

AMD RX 9060 XT成功超频4.769GHz!打破世界纪录

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版