第十一章:框架选型的十字路口——技术栈的抉择

“技术选型的本质,是赌未来。”

林小凡盯着公司CTO在全员大会上的PPT,这句话被加粗标红,配图是一张岔路口的漫画,分别标着:React、Angular、Vue

会议室里,前端组的同事已经分成三派:

  • React派的小年轻们抱着MacBook,身上印着“Hooks is Life”;
  • Vue派的中生代端着保温杯,桌上放着《Vue 3 设计思想》;
  • 角落里,唯一坚持Angular的老张叹了口气,默默合上《RxJS 深入浅出》。

CTO敲了敲白板:“新项目‘星辰系统’的技术栈,今天必须定下来。”


第一节:React派的激进提案

前端组长王傲(React死忠)率先开火:

“选择React的三个理由:

  1. 生态霸主——npm周下载量是Vue的3倍
  2. 大厂背书——Facebook、Twitter、Airbnb全线使用
  3. 未来趋势——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前维护者