Electron "另起炉灶"?新的跨端框架!性能飙升!

如果你做过桌面应用开发,大概率听过两个名字:

ElectronTauri

1773650668269.webp

Electron 让前端开发者第一次可以用 HTML + CSS + JavaScript 构建桌面软件,像 VS Code、Slack、Discord、Notion等知名应用都在使用它。

Electron 也有一个被吐槽多年的问题:

应用体积太大。

一个简单的 Hello World 应用,打包后可能就超过 100MB

后来,Tauri 出现了。

1773650691283.webp

Tauri 通过调用系统原生WebView 来减少应用体积,确实可以把应用压缩到十几 MB

但它也带来了新的门槛:Rust。


对于很多纯前端开发者来说,学习 Rust 才能写桌面应用并不是一件轻松的事情。

于是桌面开发进入了一个“选择困难”的局面:
  • Electron:简单,但臃肿
  • Tauri:轻量,但需要 Rust
就在这个时候,一个新的开源项目开始受到开发者关注:

Electrobun。
它试图在两者之间找到一个平衡点。

什么是 Electrobun?​

Electrobun 是一个 基于 TypeScript 的跨平台桌面应用框架

1773650718182.webp
它的设计目标很简单:

保留 Electron 的开发体验,同时拥有接近 Tauri 的轻量体积。
换句话说:

你依然可以用熟悉的前端技术写桌面应用,但应用体积会小很多。

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 主要负责连接JavaScript 与操作系统 API。

开发者不需要编写 Zig,但可以享受到它带来的性能优势。

为什么 Electrobun 会被关注?​

Electrobun 之所以迅速走红,主要是因为它解决了Electron长期存在的几个痛点。

1. 应用体积更小​

Electron 的应用体积通常很大,因为每个应用都会打包:

  • Chromium 浏览器
  • Node.js runtime
Electrobun 使用系统 WebView,因此无需打包浏览器。

实际效果大致是:

代码:
Electron 应用
≈ 100MB+

Electrobun 应用
≈ 10~15MB
体积减少了接近 80%

2. 启动速度更快​

Electron 启动流程:

代码:
启动 Chromium
启动 Node.js
启动 Renderer
Electrobun 的流程更简单:

代码:
启动 Bun
加载 WebView
省去了浏览器内核加载过程,因此启动速度更快。

3. 全程 TypeScript 开发​

Electrobun 的一个重要特点是:

整个项目都可以使用 TypeScript 编写。

包括:

  • 主进程逻辑
  • UI 界面
  • 进程通信
开发体验和普通 Web 项目非常接近。

同时支持主流前端框架

  • <span>React</span>
  • <span>Vue</span>
  • <span>Svelte</span>
几乎可以直接复用已有技术栈。

4. 类型安全 RPC​

Electrobun 内置类型安全 <span>RPC</span>。

主进程定义的函数,在前端调用时会自动获得类型提示。

例如

JavaScript:
export function getUser() {
  return { name: "Electrobun" }
}
在前端调用时 <span>IDE</span> 会自动提示返回值类型。

这对大型项目来说非常重要。

5. 支持差分更新​

Electrobun 内置差分更新机制。

如果应用升级时只有少量变化,用户只需要下载补丁文件。

有些更新甚至只有:

代码:
≈ 14KB
相比重新下载完整安装包,更新体验会好很多。

如何快速开始使用 Electrobun?​

Electrobun 的上手非常简单。

只需要安装 Bun 并执行一条命令即可创建项目。

1. 安装 Bun​

如果还没有安装 Bun,可以执行:

Mac / Linux

代码:
curl -fsSL https://bun.sh/install | bash
Windows

代码:
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 会是一个不错的选择。

当然,它仍然很年轻​

Electrobun 目前还处于早期阶段。

相比 Electron 十多年的生态积累,它仍然需要时间成长,例如:

  • 插件生态
  • 社区规模
  • 文档完善程度
此外,由于依赖系统 WebView,不同操作系统版本之间可能存在一些渲染差异。

但这也是大多数 WebView 框架都会面临的问题。

写在最后​

桌面应用开发正在进入新的阶段。

过去十多年,Electron 几乎是默认选择。

而现在,开发者有了越来越多新的方案:

  • Electron
  • Tauri
  • Flutter Desktop
  • Wails
  • Electrobun
Electrobun 并不是 Electron 的终结者,但它提供了一种新的平衡:

轻量、快速、对前端友好。

如果你正在寻找一种更轻量的桌面开发方案,不妨尝试一下 Electrobun

评论

目前没有任何评论.

笔记文章信息

作者
波坤太叔
最后更新

开源项目中更多文章

波坤太叔的博客文章

分享此笔记

社区
规则 帮助 用户
  • 目前没有人在聊天。
      聊天中还没有人留言。快跟大家说声Hi!
      用户活动
      刚才 · 5318资源社区