跳到主要内容

ARC 2.0.0-beta.25

理解站点目录

用 pages、content 与 .web 分开表达页面、内容对象和站点能力。

一个 Web Device 站点不是一份巨大的页面配置。它把三个不同的职责放进三个目录:页面声明放在 pages/,读者要访问的内容对象放在 content/,站点自身的配置、组件和视觉系统放在 .web/

位置负责什么不应放什么
pages/页面入口、页面 layout、页面级 SEO 与列表/详情的呈现规则文章或产品正文
content/有身份的内容对象及其正文、front matter、标签和关系全站组件实现
.web/全站配置、站点组件、tokens、主题和模板资产每一篇内容的正文
.route/把 blocklet 的 Web 入口声明给本地或发布运行时页面实现或内容数据

最小目录可以是:

text
my-site/
├── .route/
│   └── web
├── .web/
│   ├── site.yaml
│   └── components/
│       └── site-home/
├── pages/
│   └── index/
│       └── layout.aup
└── content/
    └── articles/
        └── first-post/
            └── content.md

先判断职责,再选择目录

按这个顺序判断文件应放在哪里:

  1. 它是否定义一个站点 URL 的呈现?放进 pages/<name>/
  2. 它是否是有标题、slug、正文或关系、将被列表和详情页消费的对象?放进 content/<type>/<slug>/
  3. 它是否影响多个页面的视觉、组件、配置或模板?放进 .web/
  4. 它是否只是把当前目录交给 Web runtime?放进 .route/,而不是把部署信息写进内容或 layout。

这个区分的实际好处是:同一个内容对象可被多个页面或组件引用,而不需要把正文复制进 layout;同一个组件可被多个页面调用,而不需要让每一个内容对象携带 UI。

页面和内容不是一回事

pages/index/ 通常对应首页;一个普通 pages/about/ 目录对应 /about/ 的页面入口。运行时也会从 content/<type>/ 发现集合类型,因此内容集合可以带来列表和详情路由;它不意味着每个内容目录都是一份手工页面。

pages/ 中的页面结构和 content/ 中的对象结构可以独立演进。例如,文章可以继续留在 content/articles/,而站点随后添加另一种首页或列表 layout。不要为了改变显示方式移动原始内容。

.web/ 是站点层,不是第二个内容库

当前 runtime 把 .web/site.yaml 当作站点级配置的单文件形式;locale、locales、render mode、颜色方案、评论开关,以及 SEO、template、theme 等都有明确的站点层位置。tokens.jsonredirectstemplate/logo.svg 仍是独立文件,因为它们分别是设计 token、行式重定向规则和二进制/文本资产。

站点组件位于 .web/components/。页面 AUP layout 组合这些组件。runtime 另有一条可直接静态渲染受支持 native AUP node 的 static-tree 路径;这不意味着任意 native node 都可作为页面 layout section。组件仍是承载可复用网页 HTML、样式与交互的站点层。详见用 AUP 建立页面

接下来阅读

本页描述 ARC 2.0.0-beta.25 的目录读取边界。旧 Cookbook 或历史站点可能使用兼容文件布局;在迁移前先运行本地检查,而不是把历史目录约定当作新站点模板。