Makepad Splash Skill 是针对 Makepad Splash 脚本语言的技能说明,版本标注为 makepad-widgets(dev branch),最后更新于 2026-01-19。资料建议通过 https://crates.io/crates/makepad-widgets 检查更新。
用途 Splash 是 Makepad 的动态脚本语言,面向 AI 辅助工作流、动态 UI 生成、快速原型、HTTP 请求与异步操作等场景。该技能的目标是帮助用户编写 Splash 脚本,并理解 Splash 的用途、语法与能力。
文档与完整性检查 技能要求参考本地文件 ./references/splash-tutorial.md(Splash 语言教程)。在回答前需先阅读相关参考文件;如果文件读取失败或为空,应告知用户“本地文档不完整,建议运行 /sync-crate-skills makepad --force 更新文档”,同时仍可基于 SKILL.md 模式与内置知识作答;若参考文件存在,则将其内容纳入回答。
主要能力
- 脚本嵌入与执行:可通过 script!{ ... } 宏在 Rust 中嵌入 Splash 代码;可通过 cx.eval(code_string) 在运行时求值 Splash 代码,也支持 cx.eval_with_context(code, context) 带上下文执行。
- 基础语法:变量使用 let,支持数字、字符串、数组、对象;函数使用 fn 定义并可 return;控制流包括 if-else、for i in 0..10 循环、while 循环。
- 内置对象:console 提供 log、warn、error;http 提供 get 与 post(post 可传 body);timer 提供 set(超时)、interval(间隔,返回 id)与 clear(清除定时器)。
- 控件交互:可通过 ui.widget("my_button") 访问控件,调用 set_text、set_visible,并通过 on_click 监听事件。
- 异步操作:支持 async fn 与 await,例如 await http.get(...) 后返回 response.json();异步调用可用 .then(fn(data){ ... })。
- AI 工作流集成:示例中可通过函数动态创建表单,遍历字段创建 TextInput 并设置 label,再添加到 View,体现 AI 可动态生成 UI。
使用方式 资料给出的典型用法包括:在 Rust 中用 script! 宏嵌入 Splash;在运行时用 cx.eval 或 cx.eval_with_context 执行代码;在 Splash 中直接使用 console、http、timer 等内置对象;通过 ui.widget 获取控件并设置属性或绑定事件;使用 async/await 与 then 处理异步请求。
适用场景 资料列出的用例包括:快速原型(无需重新编译即可测试 UI 布局)、AI 智能体(让 AI 动态生成和修改 UI)、配置(运行时配置应用行为)、脚本化工作流(自动化重复任务)、插件系统(用脚本扩展应用功能)。
限制与注意事项 资料强调:Splash 用于动态/运行时脚本,而非核心应用逻辑;性能关键代码应使用 Rust,Splash 用于灵活性;Splash 语法类似 JavaScript 与 Rust 的混合;脚本运行在沙箱环境中;HTTP 与 timer API 支持异步操作。
其他事实 资料未提供收费、价格、平台支持范围、具体性能指标或完整安装步骤等信息,暂未提供。