动态

构建Web应用的架构建议,涉及OpenAPI、TanStack Query等

Peter Steinberger 🦞
如果你正在打造一个涉及Web应用的十亿美元公司,以下是我对前端架构的一些笔记。

如果你不这样做,可能也没问题,但总有一天你会雇人来修复,但实际上,如果你从一开始就做一些关键优化,那个人本可以做其他更有价值的事情。

你甚至不需要学习任何东西,反正你会让代理去做的!

好了,开始吧:
- 让服务器代码生成OpenAPI规范,然后生成所有相关的客户端代码。永远不要手动做。手动输入后端类型而不是生成它们应该被禁止。

- 你需要决定客户端如何与后端通信。REST/GraphQL都可以,在这种情况下请使用TanStack Query。其他库看起来类似,但TanStack Query确实很优秀。

- 如果你想要Linear风格的同步设置或离线模式,从一开始就认真考虑并设计好架构。事后添加会非常繁琐。

- 人们喜欢使用普通的React Router,但自那以后情况已经好多了。尝试他们的新框架模式,或者干脆使用TanStack Router。使用路由数据加载器。

- 如果你在查询参数中存储了很多状态,将其视为一等公民并确保类型安全。使用nuqs或TanStack Query。

- 大多数应用只需要一个状态管理来处理服务器状态,仅此而已。如果你有其他定制需求,我个人喜欢Zustand和xstate/store。

- 如果你有一个高度交互的应用,视图中的内容不断进出,需要维护大量前端状态,音乐在播放等等,那么锁定并学习xstate。相信我,如果你想保持理智,你需要将前端建模为状态机,否则你会深陷useEffect地狱。

- React编译器来了,朋友们,useMemo和useCallback的日子结束了。相应更新你的先验知识。

- Tailwind简单有趣,但使大型应用保持一致的样式变得非常困难。你需要一个“代理优先的设计系统/组件库”,但这可能是另一天的吐槽。

- 不要害怕修改你的路由库以更贴合需求。很多应用有“抽屉”来显示额外信息。你绝对应该能说“这里有一个路由,让它变成抽屉”,然后一切从那里处理。

- 使用isPending和isError管理加载和错误状态是疯狂的。拥抱Suspense和ErrorBoundary。

- 从第一天起就为WebSocket和SSE规划一个受支持的路径,我认为如果你在构建任何AI相关的东西,从长远来看会有回报。

- 如果你正在构建SPA,不要使用Next.js。这完全没有意义。为什么要这样做。

- 肯定要在Cloudflare或Vercel上部署。还有其他服务,但相信我,它们有一些奇怪的功能缺失。

- 假设你构建了人们想要的东西,下一个工作就是建造工厂,以便能高效地构建它。据此行动。
动态Peter Steinberger 🦞2026-06-19原文

相关内容