作者:张汉东
我们很高兴终于宣布 Makepad 的首次公开发布!
Makepad (https://makepad.nl ) 是一个用 Rust 编写的 UI 框架。它旨在提高性能——几乎完全依赖 GPU 进行渲染。它具有一种新颖的样式系统,基于使用着色器调整应用程序外观和感觉的想法。为此,它还具有一个自定义 DSL,包括一个编译到多个图形后端的着色器语言。
Makepad 的 DSL 的一个主要特性是实时 UI 编辑:Makepad 应用程序监听其 DSL 源代码的更改,并在运行时更新自身以反映新代码。这使得开发人员可以在不进行每次更改都需要昂贵的重新编译步骤的情况下调整应用程序的布局和样式。
Makepad 目前在所有主要的本地平台上工作(OS X、Windows、Linux、iOS、Android),以及通过 WASM 构建的网页上。
Makepad 技术栈拥有像游戏引擎所具备的自由度和性能。因此,您可以构建非常复杂和大型的应用程序,而在使用 HTML 时,您会很快遇到性能问题。此外,Makepad 允许您编写自己的着色器。
Makepad 应用程序也可以作为原生应用程序运行,而不需要像 Electron 那样的沉重包装。适合任何真正打算构建复杂应用程序并以单一代码库轻松跨平台部署的人。Makepad 非常适合构建像 Photoshop 这样复杂的应用。
Makepad 1.0 有一个新的教程可以帮助你快速上手:https://publish.obsidian.md/makepad-docs/Tutorials/Image+Viewer/0+-+Introduction
目前 Makepad 有两个真实世界的旗舰应用:
展望未来,我们的目标是从现在开始定期发布,因此 Makepad 将随着时间的推移变得更好。
在线 UI Zoo 演示:https://makepad.nl/makepad-example-ui-zoo/index.html
虽然 Makepad 1.0 代表了一个重要的里程碑,但进一步的发展对于充分实现其潜力至关重要。未来关注的领域可能包括:
关于字体字形,评论主要集中在Makepad在不同平台下的字体渲染、字体支持和相关问题。
Makepad 团队选择自定义 DSL 和着色器语言,而不是直接用 wgpu,主要是因为项目启动时 wgpu 还不成熟,以及切换成本高。
评论者认为Makepad目前在Web端“并不能真正可用”,主要因为其纯canvas渲染方式带来了严重的局限性,尤其不适合通用Web应用。
该评论者指出,Makepad在Web端采用纯canvas渲染,这种方式本质上与游戏引擎类似,虽然适合技术演示和部分游戏,但对大多数Web应用来说有很大局限。
主要问题包括:
评论者强调,这些问题虽然理论上可以通过维护独立的无障碍树等方式部分修复,但会带来性能损失和实现复杂度。
还提到Makepad的键盘行为也不完善,且这些问题不仅限于Web端。
总结观点:Makepad的Web支持目前更像是“附带功能”,适合不在意Web体验的场景,但如果真正想做Web应用,纯canvas方案有“根本性缺陷”,不推荐用于通用Web内容。
不过,评论者也肯定了Makepad在桌面端的技术创新和视觉表现,认为其在桌面应用领域前景不错。