Electron 集成谷歌扩展实现原理

背景

目前谷歌扩展有 50W 之多,覆盖面比较广,而 Electron 又是基于谷歌浏览器内核开发的,如果将两者结合,那么就能大大节省很多开发时间,开发出来的客户端功能却更加丰富,不过 Electron 并没有完美支持谷歌扩展,尤其是谷歌扩展 MV3 版本中提供的大量的 API,Electron 本身都是不支持的,这就给开发者一种误导,Electron 不支持 MV3 的扩展。

原理分析

  1. 谷歌扩展的 API 就是一些权限,这些权限就是客户端的权限,然后再把这些权限转移给扩展开发者;

  2. 再来看小程序的实现,就是将微信能够获取到的相册,图片,视频,摄像头等手机所能获取到的权限转移给 html5 网页,通过注入一个变量 wx.xxx 的方式,提供了大量 api,而底层通过进程间通信,例如 postmessage 来实现数据的传递以及事件的传递;

  3. 再看,如果我们自己想用 html5 开发安卓 APP,并且想让 html5 按钮调用手机相册,那么我们就提供一个对象,该对象有一个函数可以拉起手机相册,并获取手机相册的照片并返回 base64 数据,那么我们把这个对象注入到 webview 里面去,webview 调用这个对象的这个函数时,就等同于调用安卓下的 api 接口,实现微信小程序的功能。

  4. 综上所述,谷歌扩展,就是用谷歌浏览器操作 windows 或者 mac,本身已经获得了一些权限,同时还把这些权限暴露给谷歌扩展,实现了更丰富的网页操作过程。

实现原理

  1. Electron 本身就是一个客户端,本身就能拿到各种桌面端权限,同时又能与网页之间通信,如使用 preload.js 进行通信,这就完成了网页与 Electron 进程之间的事件传递和数据传递,于是当扩展在网页中调用一些 API,例如 tabs,storage,cookie,download,notifications 时,你只需要重写这些对象里面的函数,并且将这些函数的动作和行为传递给 Electron,实现异步的事件传递,那么就变相地兼容了这些扩展。

代码案例

【未完待续】

相关推荐
AlienZHOU1 小时前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
Captaincc5 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
计算机魔术师6 小时前
德国Wiki被黑后两周,OpenAI终于把模型失控的账本摊开了
前端
kyriewen7 小时前
我让 AI 当面试官面了我一轮:第 3 个追问我就卡住了(附 10 道追问清单)
前端·面试·ai编程
IT_陈寒7 小时前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端
前端snow7 小时前
ai agent --- 多agent框架之图编排引擎-langgraph
前端
竹林8187 小时前
OmniPic Studio v3.2.1 核心技术架构与全平台发版解析文档
前端·浏览器
JamesZhang800787 小时前
页面内存只涨不跌? 一次泄漏排查, 牵出 WeakMap 的诞生
前端
Z小明7 小时前
第 6 章 组件进阶
前端·vue.js
江华森7 小时前
HTTP请求的完整过程详解:从DNS解析到TCP挥手的微秒级实战分析
前端