文章摘要
作者因不满现有桌面应用开发框架的复杂低效,基于多年开发经验,花费两年时间学习多种编程语言后,推出了Electrobun v1。这是一个用TypeScript构建快速、轻量、跨平台桌面应用的新框架,旨在简化开发流程,解决Electron等工具在代码签名、分发更新等方面的痛点,延续作者早年用Visual Basic和Adobe AIR开发桌面应用的美好体验。
文章总结
Electrobun v1:用TypeScript构建极速、轻量、跨平台的桌面应用
两年前,我暂停了co(lab)项目,着手打造一个理想中的桌面应用框架。如今稳定版v1正式发布,回顾这段历时两年的探索历程,我学习了Zig、C、C++和Objective-C等多种语言。
开发动机
我的编程启蒙始于2000年代初的Visual Basic 6桌面应用开发。后来Adobe AIR彻底改变了我的轨迹——我曾用它创建多个初创项目,为数以千计的用户提供桌面应用。那是我心中的黄金时代。然而经过二十余年创业历练,从独角兽企业的核心系统开发到创立自己的实验项目,我发现桌面开发体验反而退步了。在构建混合型应用co(lab)(整合了网页浏览器、代码编辑器和PTY终端)时,各种琐碎问题不断累积。
最初采用Electron构建的版本体验糟糕:代码签名、公证认证、分发和更新等环节都像是在与框架对抗。后来尝试Tauri,但Rust语言存在门槛;而Bun当时尚未发布1.0版本。这促使我决定自主开发。
跨平台演进
Electrobun最初仅支持macOS,如今已实现对macOS、Windows和Ubuntu三大平台的一键构建与分发。安装包、自动更新组件、差分补丁均可自动生成,只需配置静态资源托管(如R2/S3/GitHub Releases)即可完成部署。其中差分更新功能基于我移植优化的zig-bsdiff实现,通过SIMD和zstd技术提升性能。
随着Bun的FFI接口稳定,我逐步用其替代自研的Zig FFI层。架构优化后,Bun的共享内存机制使Electrobun在多进程运行时仍保持高效。
核心功能
当前版本提供完整的跨平台支持:
- 基础功能:窗口控制、菜单、快捷键、剪贴板、对话框
- 增强特性:Webview分区、会话存储、页面内搜索
- 开发工具:完善的打包和更新体系
特别解决了Electron遗留的<webview>标签问题。通过构建更优OOPIF方案,<electrobun-webview>实现了真正的"超级iframe"——跨平台的DOM定位、进程隔离、无光标闪烁的图层渲染,且无需修改浏览器引擎。
未来规划
co(lab)已基于Electrobun全面重构,v1的稳定使其成为构建长期产品的可靠基础。社区正在蓬勃发展,Discord中涌现出许多创新应用。感谢所有参与测试、提交问题和反馈的贡献者,你们帮助塑造了Blackboard首个重要产品Electrobun。
评论总结
以下是评论内容的总结:
正面评价
开发效率高
- 用户认为Electrobun是比Electron更高效、更轻量的替代方案,尤其适合TypeScript项目(评论1:"a more performant and lean alternative to Electron")
- 游戏开发者发现其快速启动和即时重载特性非常适合开发(评论4:"how fast and seamless it is to run typescript games with instant auto reload")
跨平台潜力
- 用户对其可能支持移动端开发表示期待(评论8:"it could also target mobile")
- 有用户希望它能支持Android编译(评论10:"Can Electrobun compile to android as well")
质疑与担忧
性能与体积问题
- 有用户质疑Bun本身130MB的体积是否真的轻量(评论7:"bun last time I checked alone is 130MB")
- 用户希望看到与Electron的具体性能对比数据(评论12:"Are there any numbers on comparison to electron")
安全性与兼容性
- 用户担心运行时加载网络代码的安全风险(评论5:"you probably shouldn't? Any additional gotchas due to the web view?")
- 有用户指出系统原生WebView在不同平台的兼容性问题(评论9:"system web views just aren’t a great solution for a ui framework")
功能建议
文档与展示改进
- 建议官网增加截图或视频演示(评论15:"could use a screenshot or two")
- 用户指出当前文章标题未能清晰反映项目性质(评论13:"Title should maybe specify that this is a blogpost")
技术细节询问
- 询问是否支持嵌入式Chromium渲染器(评论9:"Does electrobun support using an embedded chromium")
- 关注Hello World程序的编译体积(评论17:"How big does a hello world binary compile to")
其他观点
- 有用户将其与Emacs的集成开发环境类比(评论6:"This is what Emacs mostly gives me")
- 用户分享从VSCode转向Rust-based Zed的体验,暗示对轻量方案的偏好(评论14:"uses much less memory")
(注:所有评论均无评分数据,故未标注认可度)