跨平台桌面应用的技术选择

记录一些跨平台桌面应用可以使用的技术和框架

优点是主进程可以突破浏览器的沙盒限制, 访问本地的文件系统. 除此之外, 还封装了一些系统的 API, 比如通知/托盘图标/电源事件, 也有成熟的自动升级机制.

最大的缺点, 现代版的 flash (檄文, 写出来的 helloworld 可能是世上体积最大的(115M)

对比 electron 的优势是? 知乎有一篇讨论. 特点是对 chromium 的整合更深入, 魔改了 chromium. 早年据说坑很多, 最大的优势可能是兼容 xp, 现在可能坑都填起来了

electron 的瘦身版, 不再附带 chronium, 而是利用 os 自带的浏览器引擎. 也是一个实验性质的产品, 截止 2018-05-20, 已经半年没有开发了.

electrino 死了之后, 其他开发者做了 quark, 也是利用 os 自带的浏览器引擎. 目前仍然在开发早期.

非跨平台, 只支持 macos. 截止 2018-05-20 仍然是实验性质的产品, 而且已经有半年没有 commit 了

非跨平台, 只支持 macos. 利用 webkitview 来展示页面.

  • nodejs + pkg + browser

用pkg打包 nodejs 服务, 然后用浏览器访问这个服务. pkg 可以换成 node-packer 或者 nexe

用类 react 的语法写桌面应用, 其实是一个 libui 的 js 绑定. libui 本身截至 2018-05-20, 仍然是 Alpha 3.5 的状态, 但是开发很活跃.

用 vue 的语法写桌面应用, 这也是 libui 的一个绑定.

可嵌入 html/css/script 的超小引擎(<10M), 非开源产品, 但是有一些公司在用, 比如赛门铁克.

  • qt

c++ 的 GUI 框架.

C++ 写的 gui 库, 有 js 的绑定. 但是不确定是否 css 写界面. 用它写出来的 slack 才 10M 不到.