范围系统
范围系统
范围系统控制可重用的 FaceFlow 区段在何处可见以及如何共享。
对于技术用户来说,范围是 FaceFlow 的核心架构规则之一。它决定了一个可重用区段是否表现为全站资产、页面族资产,或仅限于单个页面的本地资产。
三个范围级别
- 站点(Site):在整个站点范围内共享
- 布局(Layout):在使用相同布局的页面之间共享
- 页面(Page):仅在单个页面本地使用
技术心智模型
把范围想象成附加在可重用区段实例上的可见性和变更影响契约。
概念上:
{
"component": "announcement-strip",
"scope": "site"
}重要的不是确切的存储形态。重要的规则是范围决定了该实例应该被多大范围地重用,以及之后的编辑会传播多广。
为什么范围重要
范围防止重用演变为混乱。
没有范围规则,团队要么:
- 在各处重复同一块内容
- 过度共享本应保留为本地的区段
- 无法追踪哪些变更会影响哪些页面
范围使这些边界变得明确。
心智模型
Site scope
-> affects all relevant Pages across the site
Layout scope
-> affects Pages that share one Layout
Page scope
-> affects only one Page这不是内容偏好。这是一条变更影响规则。
示例实例映射
一个简化的页面组装可能看起来像这样:
Layout: docs-shell
Site scope:
announcement-strip
Layout scope:
docs-sidebar
docs-subnav
Page scope:
release-notes-cta
migration-faq这张简单的图说明了两个重要的技术事实:
- 并非每个可重用区段都被同等地共享
- 在批准编辑之前,变更评审必须考虑范围
范围示例
站点范围
在区段必须作为全站资产时使用。
示例:
- 全局公告条
- 共享导航支持条
- 在整个站点使用的信任横幅
布局范围
当一个区段属于某个页面族时使用。
示例:
- 仅在文档页面使用的文档侧栏
- 针对某个服务部分的共享子导航
- 针对某个布局族的区段范围支持栏
页面范围
当区段仅对单个页面独特时使用。
示例:
- 一次性的活动主视觉(hero)
- 本地 CTA 条
- 页面特定的常见问题或证明区块
变更半径示例
相同的区段类型可以根据意图在不同范围下都是有效的:
announcement-strip at Site scope
-> change affects all relevant Pages
announcement-strip at Layout scope
-> change affects one page family
announcement-strip at Page scope
-> change affects only one Page这就是为什么范围应该由预期的影响范围来选择,而不是由编辑器便利性决定。
决策规则
问自己一个问题:
If I change this section, which Pages should change with it?如果答案是:
- “所有相关页面” -> 站点(Site)
- “这一页面族的页面” -> 布局(Layout)
- “仅这个页面” -> 页面(Page)
示例组合
Site scope:
global-announcement
Layout scope:
docs-sidebar
Page scope:
pricing-faq这种模型使重用变得有意图,并使变更影响可预测。
架构指导
使用范围来回答这些技术问题:
- 这个实例应该在哪里可被发现?
- 未来的编辑应该影响多少页?
- 谁应该拥有这次变更的所有权?
- 在发布前应当进行何种级别的评审?
在实践中:
- 站点范围通常需要最严格的评审,因为影响范围广
- 布局范围需要对页面族的关注
- 页面范围是进行本地试验的最安全位置
技术影响
范围影响:
- 可重用区段可用的地方
- 一次变更可能影响多少页面
- 团队如何推理所有权
- 共享结构随时间如何维护
这就是为何范围决策应被视为架构决策,而不是编辑便利性的选择。
评审模式
当团队提议扩大范围时,请像评审架构变更一样评审:
page -> layout
question: is this section now shared by a durable page family?
layout -> site
question: does this section now belong to the broader site, not one section?如果答案是“并非如此”,那么范围很可能被过早扩大了。
技术评审清单
- 所选范围是否匹配预期的变更半径?
- 该区段在该级别上是否真正可重用?
- 未来的编辑者是否会理解为何该区段被共享?
- 该区段是否承载了本应保留为本地的内容?
- 一个本该本地的区段是否被复制到了许多页面?
反模式
避免:
- 将仅为一个页面族需要的内容设为站点范围
- 将被复制到许多页面的内容设为页面范围
- 将属于全局站点外壳的内容设为布局范围
- 仅为节省短期工作量而扩大范围
实践中的示例规则
Main navigation utility bar -> Site scope
Developer docs sidebar -> Layout scope
Landing page final CTA -> Page scope相关设计规则
范围应与对象责任一起审查: