跳到正文
博客园· wzzc-dev·· 2 小时前AI 评分38

MoUI:用 MoonBit 写一次 UI,跑遍桌面、Web、手机和终端

MoUI —— 用 MoonBit 写一次 UI,跑遍桌面、Web、手机和终端 - wzzc-dev

AI 导读

MoUI 是 MoonBit 语言的多平台声明式 GUI 框架,基于 TEA 模型,macOS、Windows、Linux、Web 和移动端共用同一份代码。

正文

MoUI 是一个 MoonBit 语言的多平台声明式 GUI 框架。应用逻辑用一套 TEA(The Elm Architecture)模型编写,macOS、Windows、Linux、Web 和移动端共用同一份代码,平台目录里只有很薄的入口接线。

为什么值得看一眼

真正的类型安全 UI。 建立在 MoonBit 之上,View[Msg]、Effect、Subscription 全部参与类型检查。构建期,不是运行期。
一条流水线,四种树。 ViewDeclaration → ElementTree → LayoutTree / RenderTree / SemanticsTree / PlatformTree。可访问性语义不是事后补丁,而是和绘制平级的第一等输出。
渲染器是可插拔的,不是 switch 分支。 后端只提供一个不透明的 HostSurface,各渲染器以 provider 身份按注册顺序协商绑定。目前有:Native Skia(主线)、Web wasm-gc + WebGPU(Canvas2D 兜底)、WGPU、纯 CPU 光栅的 Sun,以及终端 ANSI 路线——同一个应用,可以只画到终端里。加一个新渲染器不需要改核心层。
为 Agent 时代设计的 UI。 运行时提交不可变的 SemanticsSnapshot(带 generation 和增量),Agent 通过 MCP 的 read_semantics / perform_action 操作界面——按语义身份寻址,不靠屏幕坐标,读取语义也不会触发重绘。原生可访问性和自动化走同一条路径。
工具链开箱即用。 moui new 生成多平台工程,moui run|build|package 打通桌面与手机(含 SDK 配置、设备发现、运行时探针)。另有零安装的浏览器 Playground,以及双语可视化 IDE MoUI Studio。
严格的架构约束。 分层与禁止依赖边写成 invariants,由仓库内的校验器和 CI 门禁强制执行——所以"框架 + 渲染器分离"不是口头承诺。

十分钟上手

moon install wzzc-dev/moui_cli/cmd/moui
moui new my_app && cd my_app
moon update && moon check
moui run macos .        # 或 windows / linux / web

坦诚的现状:macOS、Windows、Linux、Web 是已承诺的主线产品;Android、iOS、HarmonyOS、微信小程序和终端渲染路线目前标记为 experimental——代码可编译、有测试,但在拿到真机证据前不做产品承诺。我们希望你能来一起把它们推过去。

零安装 Playground 可以先试试 → https://wzzc-dev.github.io/MoUI/playground/

Apache-2.0 协议,欢迎 PR。仓库:https://github.com/wzzc-dev/MoUI(国内镜像:https://gitcode.com/wzzc/MoUI)

来源:博客园 · cnblogs.com