SuperAPI AI 工具集

makepad-2.0-app-structure

编程与开发

查看项目

更新于 10-16 02:02

技能介绍

用途

本技能面向使用 Makepad 2.0 构建应用的开发者,重点解决应用结构搭建与 Rust 代码集成问题。Makepad 2.0 应用由 Rust 代码与 Splash 脚本两部分组成:Rust 侧负责应用生命周期、事件路由和业务逻辑,Splash 侧负责 UI 结构、模板和内联交互。当涉及 makepad app、makepad getting started、app_main!、App::run、MatchEvent、AppMain 等主题时触发。

主要能力

  • 提供最小可运行应用模板,包含 Cargo.toml 与 src/app.rs 示例。
  • 说明关键组件:app_main!(App) 入口注册、script_mod! 启动脚本、App::run 初始化顺序、#[derive(Script, ScriptHook)] 结构体标注、MatchEvent 动作处理、AppMain 事件分发。
  • 覆盖 Rust 与 Splash 双向通信:script_eval! 更新状态并触发渲染、script_apply_eval! 修改控件属性、Splash 内联事件处理器(on_click、on_return、on_render)。
  • 提供从 Rust 访问控件的写法(button、label、text_input 及嵌套访问)。
  • 说明运行方式与命令行参数:cargo run、--hot 热重载、--stdin-loop、--linux-backend。
  • 介绍 Makepad Studio 调试 Splash 的方式,包括 makepad.splash 文件、std.println 调试输出、错误显示与 hub API。
  • 提供音频输入输出 API(CxMediaApi)、跨线程数据流模式与各平台音频实现说明。
  • 汇总 macOS 系统集成模式:NSStatusBar 菜单栏图标、音频设备 ID 获取、CGEvent 全局热键、跨线程通信。

使用方式

技能文档要求先阅读本地参考文件:./references/app-boilerplate.md(完整应用模板与 Cargo.toml)和 ./references/rust-splash-integration.md(Rust 与 Splash 通信模式)。若文件读取失败,则基于 SKILL.md 模式与内置知识回答。

应用初始化顺序为:注册主题(可选)→ 注册基础控件 → 注册自定义控件模块(如有)→ 从脚本模块构建 App。事件处理需在 handle_event 中调用 self.match_event(cx, event),否则 MatchEvent 不生效。

运行命令包括:cargo run -p my-app(开发)、cargo run -p my-app -- --hot(热重载,仅影响 Splash DSL)、cargo run -p my-app --release(发布)、cargo makepad run -p my-app(移动端/Web)。

适用场景

适用于 Makepad 2.0 应用从零搭建、事件与状态管理、Rust 与 Splash 混合开发、音频处理、以及 macOS 原生系统集成(菜单栏、全局热键、录音)等场景。

限制

  • Splash VM 不支持断点调试或单步执行,调试主要依赖 std.println()。
  • 无 AST dump 标志,检查解析结果需在 Rust 源码(script/)中添加日志。
  • 音频 API 仅限 Rust,未暴露给 Splash 脚本。
  • 热重载仅作用于 Splash DSL,Rust 代码改动仍需重新编译。
  • macOS 集成中不应使用 objc2 crate,会与 Makepad 的 NSApplication 冲突;不应调用 CGEventTapEnable,会反而禁用事件监听。
  • 文档未提供收费、价格等信息。