posts

《互联网产品的客户端架构·端形态与体验基础》 · 已发布章节索引(45 篇)

《互联网产品的客户端架构·端形态与体验基础》全 45 篇:13 章正文覆盖端上约束、端形态、体验质量属性、分层依赖、状态、路由、数据层、组件、构建、渲染、错误降级与端上观测;附序、前言、目录与三篇附录,配可运行的 TypeScript 实验工程。

全书 45 篇:13 章正文 + 序、前言、目录 + 附录 A/B/C。每节配可运行的 TypeScript 代码,代码块用 // file: / // tier: / // verify: 标注,可在实验工程中逐字节还原。

本页是卷一的完整索引。可以从目录与学习路径 按顺序通读,也可以按问题跳读。

全书概览

项目内容
书稿《互联网产品的客户端架构》卷一
已发布篇数45 篇(含目录与附录)
主线语言TypeScript(Node 26 原生类型剥离,零第三方依赖)
贯穿案例内容社区 + IM + 轻交易「回声」
阅读方式目录篇顺序通读,或按章节表跳读
上级专题书稿专题

前置

篇文章核心内容
序序从为什么客户端架构值得单独成书写起,交代与服务端卷的对照、读者对象与不承诺的边界。
前言前言四卷分工、贯穿案例「回声」、实验工程与三级可运行性、代码块约定、数字与版本口径。
目录目录13 章 39 节的结构、章节依赖关系、三条阅读路径与读完卷一应能回答的问题。

第 1 章 客户端架构的四个独有约束

节文章核心内容
1.11.1 客户端架构的四个独有约束从「回声」的三类界面出发,把客户端架构与服务器架构的差别收敛成设备碎片化、网络不确定、生命周期被打断、分发不可回滚四…
1.21.2 回声客户端与第一个决定把「回声」客户端收敛成页面栈、请求去重与有上限缓存三个最小部件,先回答「状态放在哪」而不是「用哪个状态库」,给出可运…
1.31.3 实验工程的三级视图说明 echo-client-lab 为什么把可运行性分成 L1 纯逻辑、L2 进程内端到端、L3 本地服务三级,给…

第 2 章 端形态谱系

节文章核心内容
2.12.1 Web、原生、小程序与桌面把 Web、原生、小程序与桌面四种端形态拆成八项可判定能力,用一份 TypeScript 能力矩阵与测试固定「稳定支…
2.22.2 同构与多端的技术边界把同构与多端复用拆成领域模型、数据层、视图、导航、生命周期、输入与存储七层,用可运行的 TypeScript 分类器…
2.32.3 选型的判据矩阵把团队规模、发布节奏、离线要求、性能敏感度与平台覆盖转成硬门槛加加权评分,用 TypeScript 选型函数输出排序…

第 3 章 体验的质量属性

节文章核心内容
3.13.1 首屏、可交互与流畅度从「回声」客户端的采样问题出发,拆解 FP、FCP、LCP、INP、TBT 五个指标各自回答什么、何时采样,用最近秩…
3.23.2 包体与内存预算把首包、路由包、图片、字体与运行内存拆成可执行的预算条目,说明预算如何从目标设备与网络反推、如何在 CI 中以非零状…
3.33.3 不可能三角与优先级首屏快、功能全、包体小为什么无法同时满足,如何把三者的取舍写成可复核的权重与排序函数,并复盘一次「回声」客户端的真实…

第 4 章 分层与依赖

节文章核心内容
4.14.1 视图、状态、领域与数据访问把回声客户端的发现、会话、下单三个页面拆成视图、状态、领域、数据访问四层,逐条说明每层负责什么、明确不负责什么,用一…
4.24.2 依赖方向与包边界从模块图出发把依赖方向写成可判定规则:依赖只能指向内层,反向边必须在构建前失败。给出 TypeScript 实现的模…
4.34.3 用测试固化分层把视图不能直接访问数据层、领域不能反向依赖视图、模块之间不能有循环依赖写成可执行架构规则,给出 TypeScript…

第 5 章 状态管理

节文章核心内容
5.15.1 本地状态与共享状态从「回声」客户端的筛选面板与草稿栏出发,把状态分成组件本地、跨页共享与服务端缓存三层,给出一个不依赖框架的最小订阅容…
5.25.2 服务端状态的缓存与失效把服务端状态从组件状态里拆出来,按价格、会话、内容流、详情与配置分别设定 ttl、stale 窗口与刷新模式,给出一…
5.35.3 状态机的引入判据用状态数量、禁止迁移、异步边界与副作用密度四个信号,判断一段状态该用状态机还是普通布尔标记;给出可运行的 TypeS…

第 6 章 路由与页面栈

节文章核心内容
6.16.1 URL 即状态从「回声」的订单详情页出发,把路由当成状态的投影:区分该进 URL、内存、本地存储与永远不该出现的四类状态,给出一个…
6.26.2 页面栈与返回语义返回键的行为不是 UI 细节,而是页面栈的公开契约。本节把 push、replace、back 三种操作与 Tab …
6.36.3 深链与状态恢复深链是外部世界进入客户端的唯一入口,也是最容易把用户带到空白页的地方。本节给出一个带版本、时间戳与状态白名单的 Ty…

第 7 章 数据层

节文章核心内容
7.17.1 请求编排与去重从「回声」发现页首屏同时发出的十七个请求出发,把并发上限、优先级、取消、总预算与指数退避放进同一张调度表,给出可运行…
7.27.2 端上缓存与离线优先把端上缓存拆成键设计、新鲜窗口、可陈旧窗口与离线回退四件事,给出「回声」四类资源的策略表和一个可运行的 TypeSc…
7.37.3 冲突解决与同步队列从「回声」在地铁里发出的一条消息出发,把离线写入拆成落盘队列、严格重放、幂等键与冲突合并四步,给出可运行的 Type…

第 8 章 组件体系

节文章核心内容
8.18.1 设计系统与组件契约组件契约不是一份文档,而是可以被校验的数据结构:props、事件、插槽、状态与可访问性各有明确边界。本节把「回声」搜…
8.28.2 受控与非受控受控与非受控不是二选一,而是同一条状态转移链上的三种模式。本节以「回声」搜索框为例,用纯函数实现 value 接管、…
8.38.3 可访问性与交互边界可访问性不是上线前的一次性检查,而是可以被数据描述的交互边界。本节把「回声」的焦点顺序、键盘可达、角色与标签、触摸目…

第 9 章 构建与产物

节文章核心内容
9.19.1 打包、分包与按需加载从「回声」首包翻倍的发布事故出发,把模块依赖图、静态闭包、懒加载边界与共享模块提升写成可运行的 TypeScript…
9.29.2 产物分析与体积预算把构建产物的体积拆成产物、模块与包装开销三个口径,给出按模块归因、按预算阈值判定 pass/warn/fail 的 …
9.39.3 缓存与版本策略从内容哈希、缓存头语义、版本兼容窗口和旧资源退役四条线,给出可运行的 TypeScript 缓存决策函数与八组测试,…

第 10 章 渲染路径

节文章核心内容
10.110.1 CSR、SSR、SSG 与流式把 CSR、SSR、SSG 与流式放回成本与页面类型的约束里,用七项页面特征推导渲染模式,给出可运行的 TypeSc…
10.210.2 水合与首屏一致性服务端与客户端首帧不一致通常来自时钟、随机数、本地状态与权限四个来源,本节用字段级帧对比把它们分开,给出可运行的 T…
10.310.3 渲染模式的选择与退出渲染模式不是一次选型就结束,而是持续核对前提的决策;本节给出退出判定函数、迁移成本矩阵与一次完整决策记录,用九组测试…

第 11 章 错误与降级

节文章核心内容
11.111.1 错误边界与白屏治理白屏往往不是某个组件写错,而是错误没有被分类、边界没有被放置。本节把端上错误分成可恢复、可降级、致命三类,给出不依赖…
11.211.2 弱网与接口失败兜底弱网下只有成功与失败两态是不够的,超时、失败、半成功需要不同兜底。本节给出缓存年龄、关键字段缺失与重试预算共同参与的…
11.311.3 埋点补报与可恢复性埋点失败后直接丢弃,会让故障现场永远缺一块。本节实现一个带 TTL、容量上限、优先级淘汰与跨批次去重的补报队列,说明…

第 12 章 端上观测

节文章核心内容
12.112.1 性能指标口径性能指标最容易在口径上失焦:同一个 LCP,均值、p75 与 p95 会讲出不同故事。本节把指标定义、采样边界、窗口…
12.212.2 崩溃与卡顿归因崩溃与卡顿的难点不是采集,而是把海量原始样本收敛成可行动的少数分组。本节给出崩溃消息归一化与签名聚合、卡顿阈值与样本…
12.312.3 埋点规范与数据质量埋点质量决定端上观测的上限。本节把事件命名、必填字段、类型校验、时间戳与 session 规则写成可运行的注册表与校…

第 13 章 卷一收口

节文章核心内容
13.113.1 回声客户端基线把页面栈、共享状态、缓存数据层与离线写队列串成一条可运行的端到端基线:用注入适配器在进程内复现冷启动、缓存命中、弱网…
13.213.2 模块划分与依赖图收口卷一的模块依赖:把各章实验整理成带层级的模块清单,构建依赖图、Kahn 拓扑排序、回路检测与方向校验,输出可直接…
13.313.3 质量属性场景与风险清单把弱网打开、进程回收恢复、支付回调重复、包体超限四个质量属性场景转成可评分风险条目,用影响、概率、发现难度三维打分并…

附录

篇文章核心内容
附录 A附录 A客户端指标与体验口径速查:FP/FCP/LCP/INP/TBT 的定义、采样、分位与统计陷阱。
附录 B附录 B端上问题排查手册:白屏、卡顿、内存、请求失败、状态丢失与崩溃的验证与处置。
附录 C附录 C客户端架构评审清单:分维度检查项、判定标准、常见反例与十条自检总表。

怎么读这一卷

与其他书稿的边界

代码与可复现性

全部文章 Books game Java Indie golang 客户端开发 Minigame Saas rust Python
books

《互联网产品的客户端架构·端形态与体验基础》8.1 设计系统与组件契约

组件契约不是一份文档,而是可以被校验的数据结构:props、事件、插槽、状态与可访问性各有明确边界。本节把「回声」搜索框的契约写成 TypeScript 结构,给出契约自检与调用校验两套规则,并用真实测试输出说明重复属性、必填默认值、受控缺处理器等问题如何在编码前被拦住。

11 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》7.2 端上缓存与离线优先

把端上缓存拆成键设计、新鲜窗口、可陈旧窗口与离线回退四件事,给出「回声」四类资源的策略表和一个可运行的 TypeScript 读缓存实现,用九个不依赖真实时钟的测试验证 stale-while-revalidate、单飞刷新、持久化与淘汰,并复盘一次把订单状态缓存过久的事故。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》7.1 请求编排与去重

从「回声」发现页首屏同时发出的十七个请求出发,把并发上限、优先级、取消、总预算与指数退避放进同一张调度表,给出可运行的 TypeScript 调度器与九个注入手动时钟的确定性测试,说明去重键、超时竞速与协作式取消的边界,并复盘一次无上限重试把弱网彻底拖垮的事故。

10 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》6.3 深链与状态恢复

深链是外部世界进入客户端的唯一入口,也是最容易把用户带到空白页的地方。本节给出一个带版本、时间戳与状态白名单的 TypeScript 深链编解码器,按格式、时效、路由、权限的顺序恢复,并为过期、下线、坏状态与未登录分别设计兜底,最后复盘一次白屏事故。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》5.3 状态机的引入判据

用状态数量、禁止迁移、异步边界与副作用密度四个信号,判断一段状态该用状态机还是普通布尔标记;给出可运行的 TypeScript 判定函数与上传状态机,验证非法事件拒绝、重试上限与状态可达性,并用列表筛选和表单校验说明这条判据的反例边界,避免抽象过度或抽象不足。

8 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》5.1 本地状态与共享状态

从「回声」客户端的筛选面板与草稿栏出发,把状态分成组件本地、跨页共享与服务端缓存三层,给出一个不依赖框架的最小订阅容器、选择器与不可变更新规则,用可运行的 TypeScript 测试验证订阅、退订与提升判据,并说明什么时候不该把状态提升到全局。

7 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》4.3 用测试固化分层

把视图不能直接访问数据层、领域不能反向依赖视图、模块之间不能有循环依赖写成可执行架构规则,给出 TypeScript 检查器、带原因的例外机制与失败样例报告,并用本机 Node 26 真实测试输出证明三条规则都能拦住真实违规,最后说明如何接进本地检查与 CI 门禁。

6 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》4.2 依赖方向与包边界

从模块图出发把依赖方向写成可判定规则:依赖只能指向内层,反向边必须在构建前失败。给出 TypeScript 实现的模块图模型、反向依赖检查、Tarjan 强连通分量循环检测与依赖优先构建排序,并用本机 Node 26 真实测试输出现场验证,最后讨论包边界、公开入口与类型依赖的落地方式。

8 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》4.1 视图、状态、领域与数据访问

把回声客户端的发现、会话、下单三个页面拆成视图、状态、领域、数据访问四层,逐条说明每层负责什么、明确不负责什么,用一段可运行的分层判定与调用审计代码暴露视图直连数据层、领域反向依赖视图、状态绕过领域三类越层,并给出本机 Node 26 真实测试输出与评审问题清单。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》2.3 选型的判据矩阵

把团队规模、发布节奏、离线要求、性能敏感度与平台覆盖转成硬门槛加加权评分,用 TypeScript 选型函数输出排序、淘汰原因与决策记录,并以「回声」的默认事实演示 Web 胜出、桌面备选的完整推演,说明评分结果何时可信、何时必须重跑,以及组合策略的边界。

10 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》2.2 同构与多端的技术边界

把同构与多端复用拆成领域模型、数据层、视图、导航、生命周期、输入与存储七层,用可运行的 TypeScript 分类器判定复用、适配与分叉,给出分叉率阈值与退出条件,并复盘一次强行统一导航的失败,说明复用为什么是一项需要成本口径与退出机制的经济决策。

10 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》2.1 Web、原生、小程序与桌面

把 Web、原生、小程序与桌面四种端形态拆成八项可判定能力,用一份 TypeScript 能力矩阵与测试固定「稳定支持、有条件支持、不支持」的边界,再复盘一次把小程序当成全平台方案的误判,说明能力矩阵为什么必须先于框架选型,避免团队用渠道优势掩盖能力缺口。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·端形态与体验基础》1.3 实验工程的三级视图

说明 echo-client-lab 为什么把可运行性分成 L1 纯逻辑、L2 进程内端到端、L3 本地服务三级,给出可运行的 TypeScript 分级器、本机 Node 26 的真实测试输出、代码块抽取与逐字节校验流程,并明确真机性能与真实浏览器渲染不在承诺范围内,避免把示例当成实测。

8 分钟阅读
书稿 互联网产品 客户端架构