在国内我经常发布一些 Angular 的技术文章,同时也翻译一些 Angular 版本的更新日志,目前我写过关于 Angular 以及相关的技术文章包含:
- [译] Angular v13 正式发布!
- [译] Angular v15 正式发布!
- [译] Angular v16 正式发布!
- 认识 Angular
- 2023 重学 Angular
- Angular 真的需要状态管理么?
- 使用 Angular 打造微前端架构的 ToB 企业级应用
- RxJS 错误处理 - 完整实用指南
- Angular 资源推荐
- Angular v14 被低估的一个 DI 特性 inject
- Angular 依赖注入 - 全面解析
- Angular 指令组合 API 使用指南
- Angular 新特性风暴,席卷前端 MAGA
- Angular 测试 waitForAsync 遇到 requestAnimationFrame
- Worktile 前端工程化之路
- Docgeni,开箱即用的 Angular 组件文档工具
- 喜迎国庆, Docgeni 1.1.0 正式发布!
- Docgeni 2.0 发布,开启自动化
- Docgeni 2.1 正式发布
文章数量并不算太多,但在国内算是乐于分享 Angular 框架的开发者之一,我本人发表的文章中从来没有黑过任何一个其他前端框架,虽然我个人不喜欢 React 框架的风格,但是我还是乐于学习 React 的思想,以及为什么它会出现 Hooks 等知识,了解它和 Angular 的区别,同时我也承认 React 是一个伟大的框架(当然它的伟大也不需要我的承认)。
但是当前已经是 2023 年了,每次我发布 Angular 新特性文章的时候总会出现一些无脑黑子和喷子:
- Angular 两个月发布了一个新框架,名字还是叫 Angular.js
- 赶紧换框架吧
- Angular 怎么还没有死
- 你们怎么还在使用这么老的框架
对此有时候我真的很无语,首先在 2009 年 - 2013 年期间,Angular.js 那时真的是带给了前端一种不一样的开发体验,但是苦于当时的 ES 标准不成熟以及前端框架刚刚兴起,所以后来逼不得已需要重新设计,然而名字还是使用了 Angular,注意不是 Angular.js,就是因为 Angular 的命名让很多喷子抓住了把柄,放弃了 Angular.js ,另起灶炉等等,首先我们的 Worktile 过去就是通过 Angular.js 升级到 Angular 了,官方的迁移工具还是很完美的,所以 Angular 一直没有抛弃过去 Angular.js 的用户,已经过去十年了,还有人拿这个 Angular.js 无脑黑,简直了。
其次就是 Angular 框架在确定要做到正式版发布,得确花了太多的时间了,虽然我敬佩官方团队的严谨,精雕细琢,然而市场不等人,此时市场已经被 React、Vue 等更加优秀的框架占领,当 Angular 正式发布的时候已经太晚了,那些已经切换为其他框架的用户短时间也不会再切换回来,同时这期间也是前端发展比较迅速的几年,这一环扣一环,导致在国内并没有太多的企业在用,同时 Angular 比较适合企业级中大项目,导致受众比较小。
再次就是每当我说我们的前端采用的 Angular 框架,总有人会疑惑: "你们怎么使用这么老的框架?", 这其中包含一些大公司的 Leader,我想说 Angular 在命名这块真的是吃了大亏,都 2023 年了,还会被嫌弃为很老框架,它一点不老,正式说比 React、Vue 还年轻呢。
Angular 在过去一直是独树一帜的存在:
- 是唯一一个使用依赖注入的框架
- 是唯一一个还在采用 Class 组件的框架
- 是唯一一个大而全,把开发者照顾的服服帖帖的框架
- 是唯一一个对 TypeScript 支持最早(没有之一),同时也是最完美支持 TS 的框架之一
- 是唯一一个最早布局 CLI,并每次升级都提供 Schematics 一键迁移的框架
- 是少数坚守着使用 Template,而不是 JSX 的框架
当然 Angular 框架也不是没有一点噪点,也不是无懈可击,比如:
- 新增了 NgModule 增加了学习成本,让初学者入门槛变高
- 使用了黑盒的 Zone.js,脏检查 OnPush 手动变更检测比较晦涩难懂,无法做更细粒度的视图更新(当然也不是所有框架都支持)
- 很多存在很久的历史遗留的 Issue 没有得到好的解决
- SSR 支持不友好,基本不可用
那么最近两年, Angular 也发现了自身的不足,也在做出改变,比如:
- 引入独立组件(无 NgModule)、简化 CLI 初始化项目模板,让入门更简单
- 新的 SSR 服务端渲染
- 解决了很多历史遗留 Issue,越来越好用
- 引入新的响应式 Signals,让无 Zone.js 变得可能,也让视图支持更细粒度的更新
- ...
那么对于这样一个发现自身不足并及时做出改进且低调奢华有内涵的框架,还会自然招黑,而且还拿十年前的 Angular 来说版本更新的事情,真是很无语。
此文共勉那些对 Angular 保持热爱的开发者,致敬,远离那些无脑黑喷子,好好学习天天向上吧。