Appearance
路由、状态与页面数据:前端应用的状态分层
主题边界
- 前端应用至少存在 URL 状态、服务端资源状态、共享业务状态和组件局部交互状态四层。
- 架构问题往往不是“用不用 Pinia”,而是哪种状态应该落在哪一层。
机制与流程
- URL 状态负责可分享、可回放、可导航的页面条件;共享 store 负责跨组件业务状态;局部状态负责当前组件交互细节。
- 服务端资源状态还要考虑缓存、失效、重试与并发覆盖,不能简单等同于 Pinia 里的字段。
- 当路由变化触发数据请求时,需要明确是路由驱动组件重建,还是组件内部 watch 路由参数再取数。
关键差异
- 把所有数据都塞进全局 store 会弱化 URL 作为状态载体的作用。
- 页面切换引起的数据失效问题,本质是资源缓存策略与状态边界设计问题,不只是 Vue Router 配置。
边界条件
- 把弹窗开关、输入框临时值写进 query 或全局 store 都是过度外溢。
- 过度依赖 watch 同步多份状态副本,会制造循环更新与调试困难。
工程落点
- 架构清晰的项目会让刷新、回退、分享链接、预取和缓存行为更可预测。
- 排查复杂页面 bug 时,先确认失真的是哪一层状态,再看同步链有没有越界。