Comet Go 是 .NET MAUI 上的单文件应用体验,基于 Comet MVU 框架。用户只需编写一个 .cs 文件,运行 maui go,应用即可在设备上实时热重载。
用途与流程:用户在单个 .cs 文件中定义 MainPage : View 类,maui go 启动 GoDevServer,经 Roslyn 编译为 DLL,通过 WebSocket 发送到配套应用,加载后支持热重载。可用 maui go create <AppName> 生成脚手架。
必要导入:文件顶部须包含 #:package Comet,以及 using Comet;、using Microsoft.Maui;、using Microsoft.Maui.Graphics;、using static Comet.CometControls;。后者启用 VStack、Text、Button 等顶层函数。
主要能力:提供布局(VStack、HStack、ZStack、Grid、ScrollView、Border、Spacer)、显示与输入控件(Text、Button、TextField、SecureField、Toggle、Slider、Image、Picker 及 ProgressBar、ActivityIndicator、DatePicker、TimePicker、Stepper)、流式样式 API(字体、颜色、背景、圆角、内边距、外边距、填充、对齐、透明度、可见性、自动化标识)以及响应式状态。
状态绑定:Reactive<T> 用于只读展示,值变化自动更新 UI;Signal<T>(来自 Comet.Reactive)用于 TextField 等双向绑定输入。
用法与限制:VStack(0, ...) 存在重载歧义,应写 VStack(spacing: 0f, ...) 或 VStack(16f, ...);Button 第二个参数必须用 lambda,不能用方法组;TextField 必须用 Signal<string>;.CornerRadius() 仅适用于 Button 和 Border,容器应使用 .RoundedBorder()。热重载基于 Edit-and-Continue:修改方法体、字段初始值、新增方法和 lambda 可靠;新增字段或属性不稳定;新增类型、修改构造函数或方法签名、更改基类或接口需重启。切换表达式中避免 Unicode 运算符,使用 ASCII 字符。编写时应预先定义所需方法,热重载期间自由修改方法体,结构性变更需重启。关于价格或收费信息暂未提供。