写在前面
布鲁克斯在《人月神话》中提出过一个著名的命题:"没有银弹"。
在前端领域同样适用:没有一种架构模式能同时解决开发效率、运行性能、系统稳定性和代码可维护性。
架构师的价值,不在于他知道多少个 NPM 包,而在于他能在需求、资源、技术限制的三角博弈中,画出那条最优的平衡线。

一、 架构设计的四大铁律
在动手写任何一行架构代码前,请将这四条铁律刻在脑子里:
1.1 简单原则:奥卡姆剃刀
- 现状: 很多架构师为了展示技术深度,在只有 5 个人的团队里强行推行微前端,结果导致打包时间翻倍,维护成本飙升。
- 铁律: 如果一个简单的方案能解决问题,绝不引入复杂的方案。 架构的复杂度应该是为了解决业务的复杂度,而不是为了满足架构师的虚荣心。
1.2 关注点分离 (SoC) 与高内聚低耦合
-
战术: * 逻辑与视图分离: 别在组件里写几百行的业务逻辑,去用 Hook 或 Service。
- 数据与存储分离: 别让 API 的数据结构直接统治你的 UI。
-
目标: 改变 A 模块时,B 模块不应该无故"躺枪"。
1.3 演进式架构 (Evolutionary Architecture)
-
认知误区: "我一次性把未来三年的架构都设计好。"
-
铁律: 好的架构是长出来的,不是画出来的。
- 架构设计要预留**"可拆卸性"**。当你现在用单体架构时,代码结构要清晰到未来可以随时无痛拆分出微前端。
1.4 康威定律 (Conway's Law)
- 核心: 系统的架构设计,本质上是组织沟通结构的反映。
- 应用: 如果你的公司是按业务线划分团队的,那么强行搞一个跨业务线的"巨型单体应用"必然会产生严重的协作摩擦。架构要顺着人流走,而不是逆流而上。
二、 决策方法论:如何科学地"拍脑袋"?
架构师每天都要面临选择:用 Vite 还是 Webpack?用微前端还是 Iframe?用 Monorepo 还是 Multi-repo?
2.1 决策模型:象限分析法
不要只看"好不好",要看"值不值"。
| 维度 | 高投入 (High Effort) | 低投入 (Low Effort) |
|---|---|---|
| 高收益 | 战略高地: 需长期投入(如:自研 UI 规范) | 低垂果实: 优先执行(如:开启压缩) |
| 低收益 | 技术陷阱: 坚决避免(如:过度重构旧代码) | 日常琐事: 顺手而为 |
2.2 ADR (Architecture Decision Record)
口头决定的架构往往会在三个月后被遗忘,然后被后人骂作"坑"。
- 方案: 建立 ADR 决策记录。
- 内容: 记录背景 (为什么改)、决策 (选了哪个)、权衡(放弃了什么,会有什么副作用)。
三、 架构师的禁忌:过度设计 (Over-Engineering)
过度设计是资深开发者的通病。
案例:
为了实现一个简单的"文件上传",你封装了一个通用的插件系统、三个抽象类、两层适配器,并号称未来可以支持上传到火星。
代价: 同事看代码需要半小时,改 Bug 需要两小时,而业务其实只需要传个图片给后端。
架构师的自我修养: 识别哪些是"必要的灵活性",哪些是"臆想的需求"。
四、 核心决策流程:从 0 到 1 落地架构
- 需求分析: 性能是核心?协作是核心?还是快速交付是核心?
- 现状评估: 团队的技术栈储备如何?旧代码的负债有多深?
- 技术选型: 调研 2-3 个方案,制作 POC (Proof of Concept) ,用数据对比(包体积、编译速度、上手难度)。
- 灰度落地: 先在一个边缘小模块试点,验证后再全量推行。
结语:架构师不仅是技术专家
架构设计不是在真空中进行的。
一个好的架构师,50% 的时间在写代码和设计图,另外 50% 的时间在沟通与说服。你需要说服老板为什么要投入资源搞基建,说服同事为什么要改变原有的开发习惯。
没有完美的架构,只有最契合当前业务阶段的取舍。
Next Step:
既然聊到了"分治"和"协作",目前大厂里最火、也最容易踩坑的架构莫过于"微前端"了。
为什么很多公司做了微前端后反而更痛苦了?
下一节,我们进入**《微前端架构 (Micro-Frontends) 的设计陷阱与最佳实践》**,帮你避开那些昂贵的学费。