news 2026/10/17 3:27:39

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MoUI —— 用 MoonBit 写一次 UI,跑遍桌面、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)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 3:27:22

SAP CPI Groovy 脚本实战指南:消息处理、路由与避坑

简介:本资源是面向SAP Cloud Platform Integration(CPI)开发者的Groovy脚本实践集合,专为初学者入门与中级开发者提效而设计,解决CPI场景中常见任务重复造轮子、函数查找困难、错误处理无参考等痛点。包内共36个文件&a…

作者头像 李华
网站建设 2026/10/17 3:26:59

SpringBoot+Vue电商管理平台毕设项目解析:从数据库到部署全流程

很多同学一提到毕设就发愁,尤其在“电商系统”这个被做烂了的选题上,不知道怎样做出质量。最近我复盘了一个比较典型的 SpringBootVue 电商应用系统管理平台源码项目,它没有花里胡哨的分布式中间件,就是老老实实的前后端分离&…

作者头像 李华
网站建设 2026/10/17 3:26:57

逆向工程入门路线:从二进制到逻辑分析的实战指南

很多朋友问我“reverse入门应该怎么学”,这个问题我答过太多次了。刚开始接触逆向工程时,我完全是个无头苍蝇,先下载了一堆工具,然后对着一个exe文件发呆,根本不知道从哪下手。后来踩了无数坑,才慢慢明白到…

作者头像 李华
网站建设 2026/10/17 3:26:42

BMI160寄存器级驱动设计:状态机、时序与FIFO原子操作详解

简介:本资源是一份面向嵌入式初学者与STM32开发者的BMI160三轴陀螺仪自研驱动代码,适用于移动设备、无人机及IoT姿态感知类项目开发,重点解决STM32F030平台下传感器基础通信与数据读取的入门实践问题。压缩包共3个文件(2个头文件1…

作者头像 李华
网站建设 2026/10/17 3:26:02

浏览器通知从原理到实战:Notification API 权限、事件与降级处理

浏览器通知(Web Notification、前端通知)是我在前端项目里反复用到的能力,也是看起来简单、落地时坑最多的功能之一。很多人第一次做的时候以为就是调一下Notification.requestPermission(),结果真正接完才发现:权限状…

作者头像 李华
网站建设 2026/10/17 3:24:38

ControlNet实战全攻略:从预处理器选型到参数调优与排查

1. ControlNet到底做了什么:从"提示词只能情绪管理"说起玩AI绘画一段时间后,很多人会陷入一个尴尬局面:提示词写了满满一大堆,什么"电影级光影""写实照片""8K细节",结果抽了几…

作者头像 李华