开发一个浏览器插件的一些技巧
此模式的浏览器插件,并不是chrome 以及firefox 模式的插件,而且可以独立运行,同时包含gui 的浏览器插件(与ie 早期的activex 插件类似)
开发说明一些细节
- 开启一个windows protocol
可以windows protocol 的目的是提供开启插件gui 的能力,当然如果windows protocol 支持的比较好也是可以包含业务逻辑的,比如electron 的就可以基于协议进行一些操作 - 提供一个webserver
提供一个业务功能操作,web 可以直接通过js 与local server 的通信,提升可靠性,注意webserver 需要使用一个独立的大端口同时注意监听最好在localhost(相对安全些) - 提供gui 能力
此功能并不是强需,只是有些业务场景我们是需要包含gui的,比如文件下载类的(百度云盘下载插件等)
可选技术栈
- gui 开发
基于nodejs 技术栈
使用node+webkit 集成的模式,此模式框架就比较多了,nodegui,neutralino,gluon,electron,tauri,maui
基于qt的技术栈
qt 是一个很不错的跨平台技术方案
平台特定的gui 框架
比如.net 可以使用winform(wpf 也是可以的),对于mac 可以使用mac 的appkit , 当然目前dotnet 也提供了跨平台的gui 能力 - 协议注册
对于基于electron 内部直接包含,基于qt 的可以自己注册(插件需要安装,安装的是否配置)或者基于protocol-registry node npm 包 - webserver 启动
此模式对于node 以及qt 都是可以支持的,并没有太多难度
说明
以上是一个简单的总结,对于需要类似插件功能的业务可以参考, 实际上基于浏览器标准扩展模式的插件开发也是一种方式,但是很多时候可能开发的功能不太符合
实际业务,基于以上模式相对比较灵活,但是也是有成本的
参考资料
https://github.com/gluon-framework/gluon
https://neutralino.js.org/
https://github.com/neutralinojs/neutralinojs
https://www.electronjs.org/
https://github.com/electron/electron
https://tauri.app/
https://github.com/tauri-apps/tauri
https://github.com/Elanis/web-to-desktop-framework-comparison
https://github.com/dotnet/maui
https://avaloniaui.net/