app 声明是 DSL 的 authoring manifest。它可声明默认 page、tone/palette/mode/branding、wrapper 或 shell、locale、page order、page discovery、override 和明确 page。它编译成 AUP configuration;不是第二套 runtime,也不替代 blocklet routing。
一份带内联 page 的小 app
app "Nimbus" {
default home
locales [en, zh]
shell {
header {
brand "Nimbus" -> href "/"
action "Home" -> page home
}
footer "Nimbus"
}
page home "Home" {
view {
h1 "Welcome"
}
}
}shell 不能和显式 wrapper "wrapper.json" 一起使用。shell 生成 wrapper material,把 page content slot 放在 header 与 footer 之间;它是简洁的 app frame,不是完整 application framework。
有意识地选择一种 page-discovery 形式
page 可内联定义,也可声明为外部 tree/settings/scaffold,或用 pages from "pages/*.aup" 这类有限的 discovery 声明。后一种由 ARC 的 page parser 解析,不是脱离 runtime 也能使用的通用 glob 语言。
内联 page 会编译成 pages/<name>.json。命名 page 导航会检查已声明 page,因此缺 page 会成为 source 问题,而不是浏览器里的意外。
当前 built-in recipe 名称范围很窄(settings-shell、workspace-shell、marketing-site、scaffold-app)。目标 runtime 没有接受之前,不要把任意 recipe 名称写成可用。
下一步读 节点、值与 sugar 和 事件、导航与可见性。