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,实现异步的事件传递,那么就变相地兼容了这些扩展。

代码案例

【未完待续】

相关推荐
叫我一声阿雷吧11 分钟前
JS 入门通关手册(24):Promise:从回调地狱到异步优雅写法
javascript·前端开发·promise·前端面试·异步编程·js进阶·js异步
开源盛世!!35 分钟前
3.19-3.21
linux·服务器·前端
必胜刻36 分钟前
AJAX 请求理解
前端·ajax·okhttp·前后端交互
小民AI实战笔记38 分钟前
NVM实战指南:高效管理你的Node.js环境
前端·node.js
www_stdio40 分钟前
前端异步核心:Promise 从入门到吃透
前端
朱建伟43 分钟前
大神尤雨溪再次出手,前端工具链整合--该文章是对vite plus官方README文档进行了翻译
前端·vite
vball1 小时前
宏观数据从哪里来?——主流宏观经济数据库与API全景
前端
zhensherlock1 小时前
Protocol Launcher 系列:Trae AI 编辑器的深度集成
javascript·人工智能·vscode·ai·typescript·编辑器·ai编程
吠品1 小时前
Vue项目Moment.js引入优化:全局挂载与按需引入的深度解析与最佳实践
前端·javascript·vue.js
不甜情歌1 小时前
JS 类型判断不用愁:4 种方法,覆盖所有场景
前端·javascript