如果你做过桌面应用开发,大概率听过两个名字:
Electron 和 Tauri。
Electron 让前端开发者第一次可以用 HTML + CSS + JavaScript 构建桌面软件,像 VS Code、Slack、Discord、Notion等知名应用都在使用它。
但 Electron 也有一个被吐槽多年的问题:
应用体积太大。
一个简单的 Hello World 应用,打包后可能就超过 100MB。
后来,Tauri 出现了。
Tauri 通过调用系统原生WebView 来减少应用体积,确实可以把应用压缩到十几 MB。
但它也带来了新的门槛:Rust。
对于很多纯前端开发者来说,学习 Rust 才能写桌面应用并不是一件轻松的事情。
于是桌面开发进入了一个“选择困难”的局面:
Electrobun。
它试图在两者之间找到一个平衡点。
它的设计目标很简单:
你依然可以用熟悉的前端技术写桌面应用,但应用体积会小很多。
Electrobun 的核心技术组合是:
分别负责不同的部分。
Bun 是近年来非常火的JavaScript 运行时,相比 Node.js有几个明显优势:
而 Electrobun 选择直接调用操作系统提供的浏览器组件:
不再需要打包整个浏览器内核。
Zig 是一种现代系统编程语言,特点包括:
开发者不需要编写 Zig,但可以享受到它带来的性能优势。
实际效果大致是:
体积减少了接近 80%。
Electrobun 的流程更简单:
省去了浏览器内核加载过程,因此启动速度更快。
整个项目都可以使用 TypeScript 编写。
包括:
同时支持主流前端框架:
主进程定义的函数,在前端调用时会自动获得类型提示。
例如:
在前端调用时 <span>IDE</span> 会自动提示返回值类型。
这对大型项目来说非常重要。
如果应用升级时只有少量变化,用户只需要下载补丁文件。
有些更新甚至只有:
相比重新下载完整安装包,更新体验会好很多。
只需要安装 Bun 并执行一条命令即可创建项目。
Mac / Linux:
Windows:
安装完成后可以检查版本:
根据提示填写项目名称即可完成初始化。
其中:
程序会自动启动桌面窗口。
构建完成后会生成可执行文件。
通常体积在 十几 MB 左右。
例如:
相比 Electron 十多年的生态积累,它仍然需要时间成长,例如:
但这也是大多数 WebView 框架都会面临的问题。
过去十多年,Electron 几乎是默认选择。
而现在,开发者有了越来越多新的方案:
轻量、快速、对前端友好。
如果你正在寻找一种更轻量的桌面开发方案,不妨尝试一下 Electrobun。
Electron 和 Tauri。
Electron 让前端开发者第一次可以用 HTML + CSS + JavaScript 构建桌面软件,像 VS Code、Slack、Discord、Notion等知名应用都在使用它。
但 Electron 也有一个被吐槽多年的问题:
应用体积太大。
一个简单的 Hello World 应用,打包后可能就超过 100MB。
后来,Tauri 出现了。
Tauri 通过调用系统原生WebView 来减少应用体积,确实可以把应用压缩到十几 MB。
但它也带来了新的门槛:Rust。
对于很多纯前端开发者来说,学习 Rust 才能写桌面应用并不是一件轻松的事情。
于是桌面开发进入了一个“选择困难”的局面:
- Electron:简单,但臃肿
- Tauri:轻量,但需要 Rust
Electrobun。
它试图在两者之间找到一个平衡点。
什么是 Electrobun?
Electrobun 是一个 基于 TypeScript 的跨平台桌面应用框架。换句话说:
你依然可以用熟悉的前端技术写桌面应用,但应用体积会小很多。
Electrobun 的核心技术组合是:
代码:
Bun + System WebView + Zig
Electrobun 的工作方式
Electrobun 的整体架构可以理解为三层。1. 主进程:Bun 运行时
Electrobun 使用 Bun 来运行主进程代码。Bun 是近年来非常火的JavaScript 运行时,相比 Node.js有几个明显优势:
- 启动速度更快
- 内存占用更低
- 内置打包工具
2. 渲染层:系统 WebView
Electron 的界面来自 Chromium浏览器。而 Electrobun 选择直接调用操作系统提供的浏览器组件:
- macOS → WebKit
- Windows → Edge WebView2
不再需要打包整个浏览器内核。
3. 原生层:Zig
Electrobun 的底层绑定使用 Zig 语言实现。Zig 是一种现代系统编程语言,特点包括:
- 高性能
- 简洁语法
- 与 C 语言兼容
开发者不需要编写 Zig,但可以享受到它带来的性能优势。
为什么 Electrobun 会被关注?
Electrobun 之所以迅速走红,主要是因为它解决了Electron长期存在的几个痛点。1. 应用体积更小
Electron 的应用体积通常很大,因为每个应用都会打包:- Chromium 浏览器
- Node.js runtime
实际效果大致是:
代码:
Electron 应用
≈ 100MB+
Electrobun 应用
≈ 10~15MB
2. 启动速度更快
Electron 启动流程:
代码:
启动 Chromium
启动 Node.js
启动 Renderer
代码:
启动 Bun
加载 WebView
3. 全程 TypeScript 开发
Electrobun 的一个重要特点是:整个项目都可以使用 TypeScript 编写。
包括:
- 主进程逻辑
- UI 界面
- 进程通信
同时支持主流前端框架:
- <span>React</span>
- <span>Vue</span>
- <span>Svelte</span>
4. 类型安全 RPC
Electrobun 内置类型安全 <span>RPC</span>。主进程定义的函数,在前端调用时会自动获得类型提示。
例如:
JavaScript:
export function getUser() {
return { name: "Electrobun" }
}
这对大型项目来说非常重要。
5. 支持差分更新
Electrobun 内置差分更新机制。如果应用升级时只有少量变化,用户只需要下载补丁文件。
有些更新甚至只有:
代码:
≈ 14KB
如何快速开始使用 Electrobun?
Electrobun 的上手非常简单。只需要安装 Bun 并执行一条命令即可创建项目。
1. 安装 Bun
如果还没有安装 Bun,可以执行:Mac / Linux:
代码:
curl -fsSL https://bun.sh/install | bash
代码:
powershell -c "irm bun.sh/install.ps1 | iex"
代码:
bun --version
2. 创建 Electrobun 项目
使用官方脚手架创建项目:
代码:
npx electrobun init
3. 项目结构
创建完成后,大致结构如下:
代码:
src
├ main
│ └ main.ts
└ web
└ index.html
- main:主进程代码
- web:前端界面
4. 运行项目
进入项目目录后执行:
代码:
bun run dev
5. 构建应用
开发完成后可以构建应用:
代码:
bun run build
通常体积在 十几 MB 左右。
Electrobun 适合什么项目?
Electrobun 特别适合开发一些 轻量桌面应用:例如:
- AI 客户端
- 开发者工具
- 本地工具软件
- 小型桌面应用
- 希望使用前端技术栈
- 不想忍受 Electron 的巨大体积
- 也不想学习 Rust
当然,它仍然很年轻
Electrobun 目前还处于早期阶段。相比 Electron 十多年的生态积累,它仍然需要时间成长,例如:
- 插件生态
- 社区规模
- 文档完善程度
但这也是大多数 WebView 框架都会面临的问题。
写在最后
桌面应用开发正在进入新的阶段。过去十多年,Electron 几乎是默认选择。
而现在,开发者有了越来越多新的方案:
- Electron
- Tauri
- Flutter Desktop
- Wails
- Electrobun
轻量、快速、对前端友好。
如果你正在寻找一种更轻量的桌面开发方案,不妨尝试一下 Electrobun。