楔子
WEB 跨平台 桌面应用程序 顾名思义就是用 JavaScript、HTML、CSS 等前端技术构建跨平台的桌面应用,WEB 负责 GUI 渲染并与后端(如 Node.js、Python、Rust 等)交互,从而突破自身无法操作 OS 层级资源的限制。其实现在如火如荼的小程序
原理也类似,只是把后端换成宿主 APP (如微信、支付宝、飞书、钉钉等)。
我大约在 2013 年开始基于 WEB 做一些简单的桌面应用,因为对 WEB 熟又有现成的资源,通过包装即可快速生成桌面应用(exe 可执行文件)分享出去。
最开始用的是 C# + webview 控件做了一款信息管理系统(WinForm
WebView 下 JS 与后端原生代码的交互基于 JSBridge,对于该项技术的详解,推荐看下:
- 一文让你彻底理解JSBridge
- 微信小程序渲染层与逻辑层独立 及JsBridge原理分析
工具总览
此类构建工具有很多,这里比较的是 Electron、Tauri、Wails 2 三款
工具 | 原生语言 | 最新版本 | 简介 |
Electron | Node.js | 21.0.1 | 使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架(嵌入 Chromium 和 Node.js 到 二进制文件) |
Tauri | Rust | 1.2 | Tauri 是一款应用构建工具包,让您能够为使用 Web 技术构建跨平台的快速、安全、前端隔离应用 |
wails | Go | 2.1.0 | 使用 Go + HTML + CSS + JS 构建漂亮的跨平台桌面应用 |
Electron
算是业内老大哥,最开始的名字叫做 atom-shell
(是 GitHub 随 Atom 一起开源的跨操作系统开发桌面应用的框架),最早的版本 0.3.1 发布于 2013 年 8 月, 在 2015 年 4 月分布的 0.24.0 版本更名为 electron(我也是这时开始接触),到最新发布的 21.2.2 版本 ,版本迭代真的是飞一般