跳到主要内容

ARC 2.0.0-beta.25

App、page 与 shell

声明紧凑的 app manifest,并把 shell、page discovery 与命名导航留在一份可审阅的 source 边界中。

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

aup
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-shellworkspace-shellmarketing-sitescaffold-app)。目标 runtime 没有接受之前,不要把任意 recipe 名称写成可用。

下一步读 节点、值与 sugar事件、导航与可见性