大家好,我是何三,独立开发者
不知道你有没有过这样的经历:打开VS Code,准备愉快地写代码,结果发现它占用了500MB内存,电脑风扇开始呼呼作响。你默默打开任务管理器,看着那个"Electron"进程,心里想:"这玩意儿真的需要这么重吗?"
这个问题困扰了很多开发者,尤其是那些还在用8GB或16GB内存的笔记本。VS Code虽然功能强大,但基于Electron的架构让它天生就"臃肿"。每个Electron应用都自带一个完整的Chromium浏览器内核,这就像是每个餐厅都自带一个完整的厨房——效率低,资源浪费严重。
最近GitHub上出现了一个项目叫SideX,它用Tauri重构了VS Code,声称能减少96%的体积,内存占用控制在200MB以内。这个数字太惊人了,让我不禁想问:这到底是怎么做到的?
为什么Electron这么"胖"?
要理解SideX的突破,先得明白Electron的问题所在。
Electron本质上是一个打包了Chromium浏览器和Node.js的运行环境。每个Electron应用都包含:
- 一个完整的Chromium浏览器内核
- 一个完整的Node.js运行时
- 你的应用代码
这就像是你买了一辆车,结果发现里面还自带了一个加油站和一个维修站。虽然方便,但太占地方了。
更糟糕的是,如果你同时打开了VS Code、Slack、Discord、Figma等多个Electron应用,你的电脑里实际上运行着多个Chromium实例,每个都在占用几百MB内存。
开发者社区对Electron的吐槽一直没停过: - "我的16GB内存,3个Electron应用就能吃掉一半" - "每次打开VS Code,我都得先关闭其他Electron应用" - "为什么一个代码编辑器需要自带一个浏览器?"
SideX的解决方案:用Tauri替换Electron
SideX的核心思路很简单:保留VS Code的前端界面,用Tauri替换Electron后端。
Tauri是一个用Rust编写的框架,它不打包Chromium,而是使用系统自带的WebView: - macOS:使用WKWebView(和Safari共享) - Windows:使用WebView2 - Linux:使用系统WebKit
这样做的优势显而易见: 1. 体积大幅减小:不需要打包Chromium,安装包从几百MB降到几十MB 2. 内存占用减少:多个应用共享同一个WebView,而不是各自运行Chromium 3. 启动速度更快:不需要初始化完整的浏览器环境
架构对比:Electron vs Tauri
让我们看看SideX是如何重新设计架构的:
VS Code (Electron) 架构:
┌─────────────────────────────────┐
│ Renderer Process │
│ (TypeScript/HTML/CSS/JavaScript)│
└───────────────┬─────────────────┘
│ IPC通信
┌───────────────▼─────────────────┐
│ Main Process │
│ (Node.js + Chromium + Native) │
└─────────────────────────────────┘
SideX (Tauri) 架构:
┌─────────────────────────────────┐
│ WebView │
│ (TypeScript/HTML/CSS/JavaScript)│
└───────────────┬─────────────────┘
│ Tauri Commands
┌───────────────▼─────────────────┐
│ Rust Backend │
│ (文件系统、终端、Git、搜索等) │
└─────────────────────────────────┘
关键变化: 1. 后端语言:从Node.js换成Rust 2. 进程通信:从Electron的IPC换成Tauri的commands 3. 渲染引擎:从Chromium换成系统WebView

上图清晰地展示了Electron和Tauri架构的核心区别
SideX的技术实现
1. Rust后端处理所有IO操作
SideX的Rust后端负责处理所有原本由Node.js native模块完成的工作:
// 文件系统操作
#[tauri::command]
async fn read_file(path: String) -> Result<String, String> {
fs::read_to_string(&path).map_err(|e| e.to_string())
}
// 终端PTY
#[tauri::command]
async fn create_terminal() -> Result<TerminalHandle, String> {
let pty = portable_pty::Pty::new().map_err(|e| e.to_string())?;
// ... 配置终端
Ok(TerminalHandle { id, pty })
}
// Git操作
#[tauri::command]
async fn git_status(repo_path: String) -> Result<GitStatus, String> {
let repo = Repository::open(&repo_path).map_err(|e| e.to_string())?;
// ... 获取状态
Ok(status)
}
2. 保持前端兼容性
SideX最大的挑战是如何保持与VS Code的兼容性。它采用了以下策略:
- 相同的TypeScript代码库:直接移植VS Code的workbench代码
- 相同的Monaco编辑器:保持编辑器体验一致
- 相同的扩展系统:支持Open VSX扩展市场
- 相同的UI组件:保持界面一致性
3. 性能优化
Rust带来的性能优势很明显:
- 文件搜索:使用Rust的
rayon库进行并行搜索 - 语法高亮:使用WASM版本的
vscode-textmate - 终端渲染:使用xterm.js + WebGL渲染器
- 内存管理:Rust的所有权系统避免内存泄漏
实际效果:数字说话
根据SideX的测试数据:
| 指标 | VS Code (Electron) | SideX (Tauri) | 改进 |
|---|---|---|---|
| 安装包大小 | ~300MB | ~20MB | 减少93% |
| 内存占用(空闲) | ~500MB | ~150MB | 减少70% |
| 启动时间 | ~3秒 | ~1秒 | 减少66% |
| CPU占用(编辑中) | ~5% | ~2% | 减少60% |
这些数字背后是实实在在的用户体验提升。想象一下,你的笔记本可以同时运行SideX、浏览器、数据库,而不会卡顿。

性能对比显示SideX在多个维度都有显著优势
SideX的现状和限制
虽然SideX很有前景,但它还处于早期阶段:
已实现的功能:
- ✅ Monaco编辑器(语法高亮、基础IntelliSense)
- ✅ 文件资源管理器
- ✅ 集成终端(完整的PTY支持)
- ✅ Git集成(状态、diff、提交等)
- ✅ 主题系统
- ✅ 原生系统菜单
- ✅ 扩展安装(Open VSX)
- ✅ 文件搜索和全文搜索
还在开发中的功能:
- ⚠️ 扩展主机(extension host)
- ⚠️ 调试器
- ⚠️ 部分高级编辑器功能
- ⚠️ 完整的扩展生态系统
已知问题:
- 扩展兼容性:不是所有VS Code扩展都能完美运行
- 平台差异:不同系统的WebView表现可能不一致
- 功能完整性:相比成熟的VS Code还有差距
如何尝试SideX
如果你对SideX感兴趣,可以按照以下步骤尝试:
从源码构建:
git clone https://github.com/Sidenai/sidex.git
cd sidex
npm install
npm run tauri dev
构建发布版本:
# macOS/Linux
NODE_OPTIONS="--max-old-space-size=12288" npm run build
npx tauri build
# Windows (PowerShell)
$env:NODE_OPTIONS="--max-old-space-size=12288"
npm run build
npx tauri build
注意:第一次构建需要5-10分钟(主要是Rust编译时间)。
为什么SideX很重要?
SideX不仅仅是一个VS Code的替代品,它代表了桌面应用开发的一个新方向:
1. 挑战Electron的垄断地位
Electron虽然方便,但它的资源消耗问题一直备受诟病。SideX证明了用更轻量级的技术栈也能实现复杂应用。
2. Rust在桌面应用中的潜力
Rust的内存安全和性能优势在桌面应用中体现得淋漓尽致。SideX展示了Rust+Tauri组合的可行性。
3. 推动WebView标准化
如果更多应用采用Tauri,会推动各操作系统WebView的标准化和优化。
4. 为开发者提供更多选择
不是所有应用都需要Electron的重量级方案。SideX为那些需要轻量级但功能强大的编辑器提供了新选择。
开发者社区的反应
SideX在GitHub上发布后,获得了495个star和32个fork。开发者们的反应很积极:
- "终于有人对Electron说不了!"
- "200MB内存占用?这比我的浏览器标签页还少"
- "希望微软官方能考虑这个方向"
- "Rust + TypeScript的组合很吸引人"
当然也有质疑的声音: - "兼容性能保证吗?" - "扩展生态系统怎么办?" - "维护成本会不会很高?"
这些问题都需要时间来回答,但SideX至少打开了一扇门。
未来展望
SideX的未来发展有几个方向值得关注:
- 扩展兼容性:能否完全兼容VS Code扩展市场
- 性能优化:在更多场景下验证性能优势
- 功能完整性:补齐与VS Code的功能差距
- 社区生态:能否形成活跃的开发者社区
- 商业应用:是否有公司愿意采用和贡献
总结
SideX是一个大胆的尝试,它用Tauri+Rust重新实现了VS Code的核心功能,目标是解决Electron应用的内存和体积问题。
它的优势很明显: - 大幅减少内存占用 - 显著减小安装包体积 - 更快的启动速度 - 更好的系统集成
挑战也不少: - 功能完整性需要时间 - 扩展兼容性需要验证 - 社区生态需要培养
对于普通开发者来说,SideX可能还不是日常开发的主力工具,但它值得关注。它代表了桌面应用开发的一个新思路:在保持Web技术栈优势的同时,用更高效的后端技术减少资源消耗。
如果你的电脑内存有限,或者你对Electron应用的性能不满意,不妨试试SideX。即使只是作为一个技术探索,它也很有价值。
毕竟,谁不想让自己的代码编辑器更轻快一些呢?
本文使用 MGO 编辑并发布
关注"何三笔记",回复"mgo" 免费下载使用