Makepad 很酷,但它适合你的项目吗

0 阅读7分钟

前言

系列写了十期,每一期都在讲"怎么做"。最后一期换个方向:该不该做。

技术选型最难的不是学一个新框架,是在一堆选项里判断"现在该不该押注它"。Makepad 尤其如此——它看起来很美,但资料少、生态小、不确定性高。

这篇是写给我自己的判断总结。如果你也在犹豫要不要把 Makepad 放进项目里,希望这个框架能帮你省掉一些纠结的时间。

1. 先回答最核心的问题:Makepad 解决了什么

不要被 GitHub 的 star 数和官网的酷炫 demo 带偏。回到最本质的问题:Makepad 在 Rust 客户端生态里到底填补了什么空缺?

Rust 做桌面应用,目前有三条成熟路线:

路线代表UI 在哪写适合
WebView 壳TauriHTML/CSS/JS有前端团队、快速交付
即时模式eguiRust工具面板、调试器、内部工具
原生渲染MakepadRust DSL想做不同于 WebView 的 Rust 原生 UI

Makepad 不是来替代 Tauri 的。它是在回答另一个问题:如果我不用 WebView,也不满足于 immediate mode 的视觉表现,Rust 里还有没有第三条路?

这就是 Makepad 的位置。它不是"更好的 Tauri",是"不同的 Tauri"。理解了这一点,后面的判断才有意义。

2. 适用场景:这三类项目现在就可以考虑

2.1 开发者工具和内部平台

这是目前 Makepad 最稳的场景。JSON 查看器、API 调试工具、日志分析面板、构建系统 GUI——这些工具的用户是开发者自己,对 UI 精致度要求没那么高,但对性能、启动速度、跨平台一致性有要求。

Makepad 的优势在这里刚好对路:启动快(原生编译,不是 WebView 加载)、体积小(8-12MB)、跨平台三端一套代码。我做的 JSON 查看器现在每天在用,比之前开 Chrome 插件快得多。

2.2 对渲染和动画有要求的应用

Makepad 用着色器渲染 UI,支持 2D/3D 混合。官方 demo 里的 Splash 动画、glTF 模型加载、地图渲染,都是 WebView 路线很难优雅做到的事。

如果你的应用需要平滑动画、复杂图形、数据可视化、甚至轻度 3D——Makepad 的渲染管线比 WebView 方案有天然优势。

2.3 想长期押注 Rust 生态的团队

如果你的团队已经在用 Rust 做后端或系统层,前端可能没有 Web 团队可以用,也不想为桌面端单独招前端——那 Makepad 提供了一个"全 Rust"的路径。

UI 在 Rust 里写,逻辑在 Rust 里写,状态管理没有跨语言边界。这对小团队或一人项目来说,开发体验的一致性可能比生态成熟度更重要。

3. 暂时不适合的场景:这三种情况建议等一等

3.1 需要快速交付的商业产品

如果你下周要出 MVP,下个月要上线——选 Tauri。这不是贬低 Makepad,是尊重现实。

Makepad 的文档密度、社区案例数量、搜问题时能立刻搜到答案的概率,都远不如 Tauri。遇到一个问题可能要自己翻源码解决,这在快速交付的节奏里是致命的。

3.2 重度依赖系统级 UI 组件的应用

Makepad 自己渲染一切。好处是完全控制,坏处是你没有系统原生的文件选择器、日期选择器、右键菜单、系统托盘。每多一个需求,就是多一段要自己写的代码。

如果你的应用需要大量系统级交互——比如和 Finder 集成、调用系统通知、拖拽文件到其他应用——这种场景下 Makepad 的"自己渲染一切"会从优势变成负担。

3.3 移动端优先的应用

Android 和 iOS 的构建链路能跑通,官方示例在移动端能运行。但"能跑"和"能上架"中间隔了太多东西:性能调优、触控体验打磨、应用商店合规、不同屏幕尺寸适配。

如果你的产品主要是移动端,Makepad 现阶段不值得赌。等它移动端的生态像桌面端一样稳定了再说。

4. 团队采用前要问自己的几个问题

如果你在带一个团队考虑 Makepad,有几个问题比"技术好不好"更重要:

4.1 你们有没有人能看懂框架源码

Makepad 的问题是:遇到 bug 时,你大概率搜不到现成答案。这时候需要有人能进仓库翻源码、看 issue、甚至提 PR。

如果你的团队里没有这样的人——不是说技术不行,是说没有"遇到问题能自己读框架源码"的习惯——那入坑 Makepad 的路会比想象中坎坷很多。

4.2 你们接受多长的学习曲线

Makepad 的 DSL、事件模型、布局系统、样式方式,都是一套独立的东西。有 Rust 基础的人大概一周能上手写 demo,一个月能写小工具,三个月能做到真正的生产级。

这段时间你能不能接受?团队里的其他人能不能接受?如果答案是否定的,那就不是技术问题,是组织问题。

4.3 你们对"不成熟"的容忍度有多高

Makepad 在快速迭代中。API 可能变,某些功能可能缺失,文档可能滞后。这不是批评——所有高速成长的开源项目都有这个阶段。

关键是你的心态:如果你喜欢"参与成长"的过程,愿意贡献反馈、提 issue、甚至 pr,那这是对的时机。如果你只是想"用一个成熟的东西把事情做完",那可能还没到。

5. 和竞品的坦诚对比

写到这里,我必须坦诚地把 Makepad 和两个主要竞品放在一起比一次。不是"谁更好",是"什么场景选谁"。

5.1 Tauri vs Makepad

维度TauriMakepad
UI 开发方式Web 技术(HTML/CSS/JS)Rust DSL(Splash/script_mod)
前端人力复用✅ 可以直接复用❌ 需要学新的
启动速度WebView 加载有延迟原生编译,秒开
体积3-5 MB8-12 MB
生态成熟度插件丰富、社区大插件少、社区在成长
渲染能力WebView 的渲染GPU 着色器渲染,2D/3D 混合
系统集成有官方插件(通知、更新等)大部分要自己写

一句话:要快、要稳、有前端团队 → Tauri。想做和 Web 不一样的东西、愿意投入学习成本 → Makepad。

5.2 egui vs Makepad

维度eguiMakepad
UI 模式Immediate mode混合(声明式 DSL + 即时模式事件)
上手速度非常快中等
视觉表现偏"工具感"可以做更精致的 UI
适合做什么调试面板、配置器、内部工具桌面应用、轻量产品
渲染后端多后端(glow/wgpu)自研着色器渲染

一句话:做"给自己用的工具"选 egui,做"给别人用的产品"看 Makepad。

6. 我现在的判断

十期写完,我自己的项目是这样选的:

  • 快速出活的内部工具 → 仍然用 Tauri 或 egui
  • 想认真打磨的桌面应用 → 上 Makepad
  • 移动端 → 暂时不碰 Makepad
  • Web 端 → Makepad WASM 作为补充,不作为主力

不是每一类项目都要选 Makepad。选正确的工具做正确的事。

我对 Makepad 的判断是:它现在不是在"替代"谁,而是在"开辟"一条新路。 这条路现在人少、路况差、导航不全。但方向是对的——Rust 做客户端,需要一条不同于 WebView 的路。

如果你愿意接受这条路上的坎坷,现在就是加入的好时机。如果你需要的是"马上到目的地",等路修好再说。

总结

十期系列,从"为什么关注 Makepad"写到"怎么判断该不该用"。

回头看一下,第一期我的判断是"先关注,不急着上生产"。十期之后,我的判断变成了"某些场景可以上生产了,但不是全部"。

最重要的变化不是 Makepad 变强了多少——它确实在变强——而是我对自己项目的需求判断更清晰了。技术选型最难的不是"学新东西",是"搞清楚自己到底要什么"。