“技术选型的本质,是赌未来。”
林小凡盯着公司CTO在全员大会上的PPT,这句话被加粗标红,配图是一张岔路口的漫画,分别标着:React、Angular、Vue。
会议室里,前端组的同事已经分成三派:
- React派的小年轻们抱着MacBook,身上印着“Hooks is Life”;
- Vue派的中生代端着保温杯,桌上放着《Vue 3 设计思想》;
- 角落里,唯一坚持Angular的老张叹了口气,默默合上《RxJS 深入浅出》。
CTO敲了敲白板:“新项目‘星辰系统’的技术栈,今天必须定下来。”
第一节:React派的激进提案
前端组长王傲(React死忠)率先开火:
“选择React的三个理由:
- 生态霸主——npm周下载量是Vue的3倍
- 大厂背书——Facebook、Twitter、Airbnb全线使用
- 未来趋势——Server Components将是下一代Web标准”
他展示了一个令人窒息的统计数据:
2023前端框架占有率:
React: 42.7%
Vue: 18.3%
Angular: 12.9%
林小凡注意到,王傲悄悄把Svelte、SolidJS等新兴框架合并到了“其他”分类。
React派的小弟们适时补充:
“我们的中台系统已经用React了,保持技术栈统一!”
“Next.js的SSR方案比Nuxt成熟!”
“现在招人,10个前端里8个会React!”
第二节:Vue派的温柔反击
技术总监李姐(前jQuery高手,现Vue信徒)放下保温杯:
“我们电商后台为什么用Vue?
- 渐进式迁移——老系统jQuery能平滑过渡
- 开发效率——我们的数据表明Vue项目BUG率低23%
- 中国特色——Element UI、Vant等优质中文组件库”
她播放了一段新员工培训视频:
html
<template>
<el-table :data="tableData">
<el-table-column prop="date" label="日期"></el-table-column>
</el-table>
</template>
“看!三行代码实现复杂表格,React要写多少?”
Vue派众人点头如捣蒜。
林小凡偷偷查了下Git记录——上周李姐刚批准了一个基于Ant Design React的重构方案。
第三节:Angular独狼的悲鸣
当所有人的目光转向老张时,这位公司唯一Angular程序员推了推眼镜:
“你们知道全球500强企业多少在用Angular吗?
- Google AdWords
- 微软Office 365
- 摩根大通风控系统
他调出一段令人头皮发麻的代码:
typescript
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }
]
})
export class AppComponent implements OnInit {
@ViewChild('chart') chartRef: ElementRef;
private destroy$ = new Subject<void>();
constructor(
private store: Store<AppState>,
private router: Router,
private breakpointObserver: BreakpointObserver
) {}
}
“完整的类型安全!清晰的依赖注入!企业级架构!”
会议室一片死寂。
实习生小声问:“这…这是Java吗?”
第四节:技术选型的黑暗面
争论白热化时,运维主管突然摔门而入:
“你们知道现在服务器上跑着多少种前端框架吗?!”
他投影出一张触目惊心的清单:
/var/www
├── legacy(jQuery + Bootstrap)
├── admin(Vue 2 + Element UI)
├── portal(React 16 + Redux)
├── new-admin(Vue 3 + Vite)
└── micro-frontends(Angular 14 + NgRx)
“每次故障排查要切5种开发环境!Docker镜像体积膨胀300%!”
CTO的脸色越来越难看。
第五节:妥协的艺术
三小时后,疲惫的CTO宣布决定:
“新项目采用……微前端架构!”
方案如下:
- 基座应用:React 18(因为招聘容易)
- 商品管理:Vue 3(沿用现有组件库)
- 数据分析:Angular(老张负责)
- 遗留模块:jQuery iframe(实在改不动了)
美其名曰:“技术栈民主化”。
林小凡在笔记本上悄悄写下:
技术选型的真相:
1. 80%取决于团队历史包袱
2. 15%取决于Leader个人偏好
3. 5%才是技术本身优劣
终节:轮回的开端
深夜加班时,林小凡发现Git历史里有个2018年的分支:
feat/micro-frontends-POC(废弃)
当年的提交信息写道:
尝试微前端方案,但存在以下问题:
1. 样式污染
2. 状态共享困难
3. 构建工具冲突
他苦笑着看向窗外——对面写字楼的灯光拼凑出一个巨大的****,像是对所有前端开发者的嘲讽。
(第十一章 完)
下一章预告:
第十二章:状态管理的深渊——Redux与Vuex的对决
“当你终于理解Flux架构时,React团队已经发明了更复杂的状态管理方案。”——某Redux前维护者