做产品 PMaker 首页
搜索
跟随系统
颜色主题
空格的键盘
页面数量是范围,跳转关系是复杂度列页面每个独立页面写成一个方块,弹窗和抽屉标注在所属页面上连层级实线画出从属关系,对应导航和面包屑连跳转虚线画出做完动作后去哪,对应按钮标状态需要登录、需要权限、可能为空的页面做标记你不画出来,那些连接对 AI 就不存在

实线是从属关系,对应导航和面包屑;虚线是完成某个动作后的跳转,对应按钮。

页面地图

画出全部页面和它们之间的跳转,再开工。

在写第一行代码之前,把全部页面和它们之间的跳转画在一张图上。页面数量是范围,跳转关系是复杂度。

你会遇到的现象:

  • 做到一半发现某个页面没有入口,或者进去了出不来
  • 同一个内容有三个入口,三处显示的东西还不一致
  • 让 AI 一个页面一个页面地做,做完发现它们连不起来

一个页面一个页面地做,每个都合理,合在一起却不成立——这是 vibecoding 最常见的结构问题。AI 每次只看得到当前这一个页面,跳转关系只存在于你脑子里,你不画出来它就不存在。

怎么画

画的时候按四步走,每一步只做一件事:

步骤 具体做什么
列页面 每个独立页面写成一个方块。弹窗和抽屉不算独立页面,标注在所属页面上
连层级 用实线连出从属关系。这条线对应导航和面包屑
连跳转 用虚线画出「做完某个动作之后去哪」。这条线对应按钮
标状态 在需要登录、需要权限、可能为空的页面上做标记

实线和虚线必须分开画——混在一起就分不清哪些跳转是结构性的、哪些是流程性的,改起来容易漏。网站地图这个概念从设计阶段就存在,它本来就是用来在开工前规划页面结构的。site-map 画的形式不用讲究,思维导图、文本缩进、让 AI 生成一段 Mermaid 都行;值钱的是那张图让跳转关系变成了看得见、改得动的东西。

画完检查四条

  • **每个页面至少有一个入口。**没有入口的页面等于不存在,除非它只通过链接分享访问。

  • **每个页面都有出路。**进得去出不来的页面在移动端尤其致命,用户只能退出应用。分享页是最常见的断头路:它只有进来的线,没有出去的线,用户看完只能整个退出应用。

  • **数一下最深有几层。**超过三层就回去看能不能提上来(见宽而浅)。

  • **同一个内容有几个入口。**多入口不是问题,问题是几个入口进去之后显示的东西不一样。

  • **每个页面至少有一个入口。**没有入口的页面等于不存在,除非它只通过链接分享访问。

  • **每个页面都有出路。**进得去出不来的页面在移动端尤其致命,用户只能退出应用。

  • **数一下最深有几层。**超过三层就回去看能不能提上来(见宽而浅)。

  • **同一个内容有几个入口。**多入口不是问题,问题是几个入口进去之后显示的东西不一样。

给 AI 的话

把地图放进上下文,AI 做每个页面时就知道它在整体里的位置。

PROMPT · 页面地图

这是产品的页面地图,之后每次做页面都要遵守它:

层级(实线):
- 项目列表
  - 项目详情
    - 改稿记录
    - 生成对账单
  - 新建项目

流程跳转(虚线):
- 新建项目 完成后 → 项目详情
- 生成对账单 完成后 → 项目详情
- 任何页面 未登录时 → 登录页

约束:
- 不要新增地图之外的页面。确实需要新页面时,
  先告诉我它该挂在哪一层、入口从哪来,等我确认。
- 每个页面都要有返回上一级的路径。
- 做某个页面时,把它的入口和出口一并实现,不要留断头路。

现在开始做:[页面名]

最后那条约束能省掉很多返工。AI 默认只做你点名的那个页面,入口和返回经常是空的,等你点进去才发现。

这张图的存在理由,是它把只在你脑子里的跳转关系变成了外部可见的东西:你可以拿它跟人评审,可以把它贴进给 AI 的上下文,也可以在画完之后数一数层数、查一查断头路。地图画完不是终点——动手做第一个页面之前,先把三种结构图里的信息结构图一起画了,页面之间的「连得上」才有依据。

参考资料

  1. Site map — Wikipedia