乐趣区

关于javascript:Angular-之我见

很久没有写过技术软文了,尽管 Angular 公布已有四年,失去了越来越多人的关注及认可,然而依然有很多人不分青红皂白的进行诽谤。我打算联合本人的经验从主观的角度聊一聊我眼中的 Angular。

自己刚做前端接触的是 jQuery,对 MVVM 库和框架知之甚少,且身边没有独当一面的大牛引领,全靠视频教程和本人的摸索。起初做新我的项目也是抉择了 Vue 技术栈,次要是本人菜,胆怯 hold 不住其它框架。再起初无心中接触到 Angular,好像醍醐灌顶,齐全被 Angular 文档吸引,感叹其双向绑定的设计巧思以及数据驱动的无穷魅力。

从我这几年应用框架的教训来看,前端框架的上限是一样的,也就是说如果没有对立的标准以及优良的架构,所有框架都很容易写出难以保护的垃圾代码。即便是 Angular,同样也有这样的问题(大部分是不相熟 Angular 造成的),然而 Angular 最大的劣势是它的下限,只有参考官网格调指南的倡议并且灵活运用依赖注入、响应式表单、拦截器等性能,系统维护及迭代都十分轻松。

从我自建的 Angular 学习交换群来看,当初想要学习 Angular 或者深刻理解的敌人越来越多,然而依然有很多人想尽各种理由为了黑而黑。本文简略总结了一些罕用的黑梗并从本人相熟的角度进行反驳,心愿喜爱 Angular 的敌人不忘初心,不要受这些观点影响。

降级梗

AngularJS 到 Angular 的断崖式降级太坑了!

AngularJS 和 Angular 原本就是两个时代的框架,Angular 只是因循了 AngularJS 的设计理念,前端技术的飞速发展以及 Angular 超前的技术选型使得 1 到 2 的降级不可能是平滑的适度,而且 Angular 诞生的初衷就是摒弃 AngularJS 中古老的糟粕的技术实现。如果两者真的没有断崖式更新的话,那么 Angular 失去的吐槽和谩骂肯定比当初更多。另外我想说一点,即便两个框架存在微小的鸿沟,然而官网仍然给出了降级计划,我感觉这曾经十分良心了。我置信从 AngularJS 降级到 Angular 显然比换框架重构的代价低。

后端梗

Angular 不就是后端那一套嘛!

这个梗的影响力和杀伤力都称得上 NO.1,就连 Vue 作者尤雨溪在 Angular 刚公布时也甩了一个后端梗进行冷言冷语。

我是一名纯前端,后端只简略接触过 PHP,我并不分明到底哪些才算是后端那一套。从最开始接触 Angular 到简单零碎的开发,我只晓得装璜器、依赖注入这些写法很天然也很灵便,并没有因为这些概念接受太多的心智累赘。另一方面,当初的招聘 JD 中个别都会加一项: 有后端教训者优先 。可见当初的用人单位更加重视全面的综合素养,对于没有后端教训的前端开发者,应用 Angular 对于横向技术的拓展更为无利,所以秉承后端那一套相对不是好事。换个角度,咱们再来看看如日中天的 TypeScript,它也不过是秉承后端思维的语言。如果有人因为后端思维而不承受 Angular 的话,那么 TypeScript 也同样应该被抵制,但事实是承受 TypeScript 的开发者越来越多,比方某某框架底层也改 TS 了。

招聘梗

Angular 招人太难了!

从我做面试官的角度来看,有 Angular 开发教训的候选人的确很少,如果单纯从框架应用的熟练度招人 Angular 的确吃亏。然而面试中波及具体框架的问题曾经越来越少,更多的还是宏观的基础知识,也就是说以同等条件招一个 vue 开发者也是一样的问题。我上一家公司的某部门就是 vue 技术栈,一个季度也没招到适合的候选人。

其实招聘难并不代表用人难,咱们部门的后端实习生也就两天工夫就能上手 Angular 了,起初我也带过前端实习生,简略教了一下,也很快实现了需要。 招人的难易水平不在于框架,因为根底扎实的前端本就难得。

黑盒梗

Angular 把 Webpack 的相干配置都封死了不灵便。

很多人喜爱吐槽 Angular CLI 把 Webpack 配置写死了,相比其它框架提供 config 目录来说不灵便。对于 Angular CLI 能够拆分 Webpack 配置项就不说了,当初单纯探讨这种设计到底有没有益处。其实这也是一种开闭准则,将简单罕用的性能包装,而后通过内部参数项进行配置。这种设计形式基本就不陈腐,大部分插件也都是相似的实现准则。其中比拟典型的插件比方赫赫有名的 ag-grid 和 fullcalendar,两个插件的性能都很简单而且都没有裸露 DOM 构造,都是通过 JSON 数据进行自定义配置,有些性能因为没有残缺的 DOM 构造的确操作起来会有些好受,然而益处就是轻便,应用简略。

从我这两年做我的项目的经验来看,应用 Angular CLI 的配置齐全足够,并没有遇到必须独立配置项的状况。

生态梗

Angular 生态不行,组件库很少。

Angular 在 v5 之后生态曾经逐步完善,组件库及插件的数量齐全不逊色于其它框架,而品质上更是有过之而无不及。Angular 官网也亲自保护了一套 Material 组件库,品质之高无需多言。Google 外部还有一套 React 编写的 MDC 组件库,然而通过比照之后发现品质和 Angular Material 还是差一个品位。还有一个社区保护的基于 Angular 指令的 Flex Layout 布局神器,更是弱小到没敌人。之所以弱小,是因为它不仅实现了 Flex 布局,而且集成了 Grid 布局,这也是我晓得的惟一一个 CSS Grid 框架。

总结

除了以上提到的罕用黑梗之外,很有很多其它不常见的吐槽观点。 欲加之罪,何患无辞? Angular 还有很多待解决的 issue,所以轻易挑一个 issue 进去都能够吐槽一番。只盯着毛病看的人,满眼都是毛病。

就在写这篇文章的时候,又看到了一个观点清奇的黑梗,开始吐槽 Angular 的 decorator,话中有话应该是 Angular 是装璜器的重度用户,而装璜器还没有被标准化(这个规范看起来和 TS 的差距越来越大,而且 TS 的装璜器也只是试验个性),一旦装璜器被标准化,看你 Angular 怎么开场。黑的的确高超,不理解的人很容易被吓住,其实 Angular 的装璜器和 TS 并没有间接关系,只是一个语法糖,而且 Angular 也有本人的一套动态编译,即便规范的变动再大,Angular 都有足够的弹性应答,业务侧应用 ng update 也能够很容易地进行代码替换。

本文并不是想比照框架间的优劣,只是心愿 Angular 能够被公正看待。如果不喜爱 Angular,也请不要歹意诽谤。

最近看到有敌人想找 Angular 相干的岗位,列举一下本人晓得的公司及部门,欢送大家纠正补充 [偷笑]

  • 若干外企(相对香)
  • 阿里云
  • 华为云
  • 灵雀云
  • 海致 BDP
  • Worktile
  • 猿辅导
  • 博客园
  • 中信银行软开(局部零碎)
  • 360 大数据中心(局部我的项目)
  • 马蜂窝系统部
  • 竹云
  • 中兴通讯(局部零碎)
退出移动版