2018年已过一半,为什么绝大部分前端团队还是无法重视Angular?

论坛 期权论坛 期权     
匿名的论坛用户   2021-1-9 03:58   7055   10
Angular从2016年发布至今已经过了两年,随着不断的迭代,其相对于其他框架的优势已经越来越让人无法忽视了。
但是——
为什么现在的Angular社区还是没有意料之中的活跃(国内)?
为什么相似架构却无法复制spring在服务端的成功(国内)?
经历了Angular混沌期的两次项目开发,现在只能用Ts版cocos勉强维持对ng的爱酱紫,望大佬解惑。
分享到 :
0 人收藏

10 个回复

倒序浏览
2#
热心的小回应  16级独孤 | 2021-1-9 03:58:44
最近一年半的时间都在用Angular进行项目开发,从我个人了解/学习Angular的路程中,我觉得Angular的某些优点反而是阻碍Angular“火”起来的原因:
  • TypeScript
没错,就是TypeScript。Angular对TypeScript的完美支持,搭配VSCode这样的利器,本身对于开发效率还是项目质量都是很大的提升。众所周知,虽然TypeScript早在Angular发布前几年就已经提出,但是由于缺乏一些框架/工具的推动,并没有流行起来。Angular对于TypeScript的推动作用显而易见,我想很多开发者都跟我一样,是通过Angular去学习TypeScript的。
但是对于一个没接触过Angular的开发者来说,想了解Angular时面对着完全基于TypeScript的文档,在刚开始时心里多少会有些基于本能的抵触。虽然Angular在早期文档是有TypeScript/JavaScript/Dart三个版本的,但是JavaScript/Dart的文档落后TypeScript太多,后来官方也只维护TypeScript一份文档了。站在开发者的角度,本身可能只是想去学习一门新的框架,结果刚开始看文档就发现还要学一门新的“语言”(虽然TypeScript只是JavaScript的一个超集)。TypeScript的静态类型检查、接口等特性,对没有接触过编译型语言的开发者来说,上手也会造成一定的困难。
  • Angular是一个框架
我想这就也是Angular和Vue/React的一个主要不同点,Vue/React本质上是一个前端View层的Library,而Angular是一个大而全的框架。
学习Angular,出了了解基本的数据绑定,你还需要学会使用Rx.js处理各种异步事件、使用module去模块化管理你的应用、使用service去封装业务逻辑提高复用性以及依赖注入等等。在学习Angular时需要理解这些概念,并且在开发中遵循这样的一些约定。从工程化角度来说,Angular的component、module、service等基本特性都是非常好的实践。在构建大的应用时,Angular的这些特性可以让你的应用可以有很不错的可维护性和拓展性。这些约定可以带来的另外一个好处就是如果项目有新人加入,Angular这些"条条框框"的约定可以让一个之前甚至没有Angular经验的人也可以写出质量过关的代码。
不过这也造成了如果要上手Angular,你必须要了解Angular这些相对高度工程化的概念。对于后端开发人员来说,可能这些概念(依赖注入等)并不陌生。可对于没有后端经验的开发人员来说,是需要一定的时间成本去学习了解这些概念的,即使Angular有着非常友好的官方文档。
同时,很多轻量级的业务场景可能也并不需要Angular这样一个框架。相比之下,Vue/React作为一个View的Library,很容易就能集成进项目之中。Vue提出的渐进式框架的理念也让很多人更容易接受。

所以一些大型项目考虑到稳定性和可拓展性,会在项目开始时就考虑Angular,了解并且可以熟练使用Angular之后,开发人员也会从中受益。我想很多中度/重度使用过Angular的开发者会觉得因为使用Angular所学习的这一切都是非常值得的,并且会喜欢上这个框架。
但Angular作为一门框架所有的各种好的实践,同样也是需要时间去理解去学习的,可能很多时候不能像React/Vue一样快速上手。由此,可能Angular也在不经意间给打上了”适用于大型项目“的标签。这也一定程度上对Angular的推广造成了限制吧。但无法改变的是Angular是一门值得去学习去使用的框架。
3#
热心的小回应  16级独孤 | 2021-1-9 03:58:45
---------2018-11-20更新--------------------------
2018前端框架的调查报告出来了。
https://2018.stateofjs.com/front-end-frameworks/overview有人觉得满意:

有人觉得不公平:


不满意的,主要原因还是"企业"方面的因素。
------------------------------------
13-15年用Angularjs,16年用React+React-Router+Redux+React-Redux+whatwg-fetch+Redux-Saga,17-18年用Angular。
认同Angular适合企业应用开发的观点,Typescript、全技术栈、Rxjs等等都适合企业应用。
从Angularjs升级到Angular2的过程中存在一些政策摇摆和不稳定,让很多Angularjs的粉丝产生困惑,丢掉了一大批刚刚入门的企业研发粉丝。但是从Angular4以后,造成目前现状的原因,我认为主要原因不在于Angular,而在于企业应用的大环境。
企业应用开发人员整体思想比较落后,技术没有前瞻性,在技术选型上没有自己独立的观点。
刚毕业的时候做过两年对日外包。工作内容是把日本原有的一套用Perl开发的系统迁移到Servlet/JSP上。那时候所有人都认为(甚至嘲笑)日本人技术老旧。现在发现,其实企业应用都是一样一样的,只是中国企业应用起步晚,刚起步的技术就搭上了PHP或Servlet/JSP这班车,比日本的Perl那班车先进一代而已。
大部分搞企业应用的公司,都采用老技术。只要这套老技术能够满足需要就一直用下去。没有效率可言,但却要求速度。从老板到下面,提高速度的唯一方式就是堆人,而不是技术革新。
所有的技术都是被动听说的,从来不主动预研做技术储备。只要老的一套技术能够用下去,那么面对所有其他技术都只有一句响当当的话:这个技术不适合企业应用!对于任何新技术,他们首先想到的是困难和学习,然后就缩头。而掌握新技术之后带来的效率提升是他们永远看不见也想不到的。
在迫不得已需要接受新技术的时候,又没有主见,人云亦云。例如一个公司开发的应用完全在局域网里,千兆带宽。选型的时候在网上看了一堆Angular/React的对比文章,文章说Angular的js文件比React的大几百k,然后就排除Angular。Angular和React是不是完全对应?Angular多出的几百k带来哪些开发便利性?这些都不去考虑。
在千兆局域网环境下,几百k真的有多大影响呢?而事实情况是,他们做的项目还在美工切图,图标都不用字体,背景图片优化一下都能省出几百k来...

现在的企业应用,只用jquery或easyui之类的还是占大多数。甚至前后端分离对于他们来说都只能是想想就算了的事。
4#
热心的小回应  16级独孤 | 2021-1-9 03:58:46
收起你们的技术细节,angular在国内发展不好,因为angular抓不住国内团队里能决定业务技术栈的关键少数
“质量,效率,成本”能提高这三者中其中两个,才可能让技术负责人决定使用你。
那么看看angular的情况,使用angular能提高前端代码“质量”,这个在中美都一样,但是后两点,在中美则有着巨大的差异
在美:班科生比例大,很多人都是考算法和设计模式进入公司了以后再选的自己要做前端还是后端,但是人家底子是一样的,薪水也是一样的,所以angular上手快,学习成本低效率高,而且不会因为使用了angular需要招专职人员增加成本。
所以在美,使用angular对比传统前端,增加了 质量、效率,但成本不变。
在国内:你能花5000招个前端,能花5000招个angular么??
有些angular推广者的论点是“前端浮躁,沉淀以后质量会好的”,这是一个枉顾中美环境差异下的判断,只能是个愿景。除非你能让其他行业的基层员工培训一两年以后都能赚6000,不然IT公司永远可以5000块钱招到前端,你敢用angular就会有一群平台的人问你使用angular的“必要性”,你能跟他们说明白么?但是你坚持就是要用angular,把手下一群人都培养起来,从TS开始学,为了让他们理解AOP和依赖注入,你还教他们学java,为了查文档学英语,那么,他们第二年就换高薪工作了呀。。。
在国内的现状就是,使用angular对比传统前端,增加了 质量,但是想保证效率高,成本就会提高,想保证成本不变,效率就会降低。 那么这个框架意义也就不大了

其实v8出现到现在10年了,这10年里的前端没有angular也就这么过来了。在美国因为有公会保护,加班受控,为了提高开发效率使用并且致力于开发像angular这样的框架很正常,但是在中国
1.质量从来不是最重要的,不信你问问碧桂园
2.效率不高可以用加班来补,不信你问问。。。。问谁都行
3.成本增加就是要平台老命!
综上
5#
热心的小回应  16级独孤 | 2021-1-9 03:58:47
我是个后端,最近由于要和前端合作看angular的一些教程 主要用.net 其他语言搞过python, golang写hyperledger chaincode,更早时候原始的jquery+html+css+ps切图这种old school的前端开发也搞过 最近正好在看angular2, 个人感觉是 这个东西, 高级, 咱们看看都有啥
利用注解来实现组件的定义----后端一看,哟 牛逼啊 TS能在JS上面实现attribute,黑魔法黑魔法
而我如果是N年前的old school前端,第一反应,这是个啥语法?为什么要这么做?
组件有自己的template---看着好眼熟啊。。。。这是不是。。webform!
而我如果是N年前的old school前端,第一反应,嗯 有意思 不过现在其他几个框架貌似也都是这么干的?
依赖注入---后端一看,哟 IOC都上了 有意思有意思 咱可以直接写单元测试不用鼠标点来人工测试了(非E2E测试)
而我如果是N年前的old school前端,第一反应,这脱裤子放屁的事情是要干嘛?
RXJS(angular 原生不带这个 但是教程上复杂应用用到了)---哟 这不就是linq+事件+异步么?牛逼牛逼牛逼,api复杂了些 但是用多了也没问题
而我如果是N年前的old school前端,第一反应,这么复杂。。。是要干啥?
Redux---后端一看, 哟 这好像就是个存储上下文的东西嘛。。。嗯 原来人家的教程也说不一定要用
而我如果是N年前的old school前端,第一反应,这么复杂。。。是要干啥?

所以angular真正的用户其实是。。。。。后端程序员对不对?
但是作为一个被微软培养懒了的后端程序员。。。有点不能接受啥都得自己写命令。。。毕竟后端ide可以右键一个方法然后直接生成unit test。。。你angular现在的工具链好像还很基础吧

6#
热心的小回应  16级独孤 | 2021-1-9 03:58:48
先说结论,三个都用过,如果要做一个新的项目,我基本只会选择 Angular。
Vue 还在几百个 star 的时候就关注了,那时候 Angular.js 还如日中天,React.js 还没出世,刚把手上的 Backbone.js 切换到 Knockout.js,还用的是你们没听过的 Durandal。
React.js 出来以后就一直玩 React.js,还实现过一个 Virtual DOM 的 lib,还写过一个教程。
我一直想寻找前端的银弹,银弹当然是不存在,你总得给我一把枪吧,但你把一堆零件交给我,告诉我自己自己组装。
这些库都太叽歪了,写个样式都10种不同的解决方案,状态管理也没有官方的说法。说不定两天一又出一个新的,告诉你你以前做的都是错的。
折腾不来,我只是想安心地实现需求。让我知道这个架构是对的,这条路是确定的,我按照官方做法走下去就大概率没问题。
我不用处理太多构建问题,不用处理打包问题,代码提示良好,连模板都能 . 出东西来。每个方面的问题基本都有官方的做法,对前端的方方面面负责。
用 Angular 纯粹是图个心安,它也许不是银弹,但至少是一把拉膛就能用的枪。
至于国内为什么还没能重视,可能就是因为太难了,一个 Rx.js 就能把你搞晕。(但其实相对于 Angular.js 来说,已经简单很多了)
也跟团队的 Leader 有比较大关系。讲道理,长远项目负责一点的应该用 Angular。
7#
热心的小回应  16级独孤 | 2021-1-9 03:58:49
我想站在一个初涉现代前端工程的年轻人的角度来回答下这个问题.

其实早在2016年(大二升大三的暑假),我在公司实习时,就接触了AngularJS.当时经过2个月的实习,说实话,还是没懂AngularJS的精髓在哪,但是勉强能写点东西.具体没印象了,不过重点来了!!短短一年,17年再实习时,发现换了Angular2.我想,不就是个2.0,我用过AngularJS的,应该差不多吧.然后...你们可以脑补我拿到ng2的代码时的呐喊:这!都!是!啥!?

完全看不懂代码,也没什么人教(公司没ng大牛),就结合百度,边写边猜.当时我对前端的认知是这样的:
  • 一个基本包含html,head,body的文档
  • 在head里引入css和js文件
  • 保存,浏览器刷新看效果
结果当时拿到手的ng项目是这样的
  • 为什么我的页面没有头部?都是业务代码?
  • 为什么我JS都不用引,他就能找到?(其实是TS,当时以为这俩是一样的)
  • 为什么我都不用F5,他就自动刷新了?这就是人工智能吗?!
  • 为什么代码上有import??这不是java的吗?
  • 这个cmd(ng-cli)是啥!?这绿绿的还挺好看的.
  • 网上提问,都告诉我说这是rxjs,这是啥?es6又是啥?
  • 为什么代码要打包?不是写完直接打开就可以运行的吗?这代码这么邪乎?
还有很多很多问题..当时都是扑面而来,我的内心只有一句:卧槽!后来,慢慢的就记住了怎么写,会有怎样的效果,但是你要和我讨论,什么是组件化,什么是模块化,什么是可维护的架构,得了吧,都是玄学~!

后来,开学了,我就从公司离职了.但我总觉得,Angular这么难,我好不容易会用了(也就是知道一些API是怎么用的而已),我不能忘记了这么复杂的技术!然后我就自己做了个项目,重新理解一些概念.经过hin长hin长时间的研究,终于理解了,rxjs等一系列的黑科技.当有人问我Angular好在哪里时,我以前可能会这样回答:
写代码不用刷新?代码会自动提示?*ngFor比较方便?这些算好处吧.
可现在我能这样回答:
Angular使用了MS的TS语言,对类型和语法有了更强的制约,使得开发体验极好.异步加载模块,大大提升了用户体验.组件化开发,具有高可维护性的特点,更利于分配工作.自带ng-cli,将许多黑科技揉为一体,使得开发者更容易上手.
这就是我研究了这么长时间的成就——更加会吹B了.
言归正传,Angular真的是上手难度太高了,很多概念大家都不知道,人都是懒的嘛,我也不想学这么复杂的玩意.更不能要求每个人对于这种高难度的产品,都愿意去尝试,可如果你真的很想接触这种可吹b的框架,但是感觉很多资料都看不懂怎么办?没关系!可以参考下我的教程
Angular教程 - Eve (不定期更新)
用非常通俗易懂的语言来告诉你怎么上手Angular,不会扯很高级的语言,尽可能用普通人的交流方式.是的,我就是在打广告,不过我也是为了推广Angular嘛,这不都是为人民服务嘛!







8#
热心的小回应  16级独孤 | 2021-1-9 03:58:50
至少在中国,angular面临的处境,已经从“为什么不用”,变成“给我个理由为什么要用”了。

产品少项目少团队少人才少,这个是既成事实,寻求原因没有意义,重要的是,如果想翻身,就要告诉大家,你能提供什么额外的价值?

那么angular能提供什么额外的价值,是react和vue提供不了的呢?恕我孤陋寡闻,我不知道。

angular的支持者喜欢谈架构,谈封装,谈规范,谈抽象。这些可能都有道理,但是这不是0和1的差距,而更像是50和100的差距,基于react和vue一样能实现这些,顶多是angular提供的基础设施更好(然而现在的react/vue团队对于基础设施都有自己的成型解决方案了),更完备一点罢了。我不认为这是可以绝地反击的优势。

另外关于“大项目”,angular不是喜欢说“大项目适合angular”嘛?我斗胆说一句——前端没有大项目。

多大算大?200个页面算大嘛,或者400个?然而这样的“大项目”我们是怎么做的?我们是水平划分多个模块,每个模块包含一个或若干个页面,最终集成起来,我们是这么做的。这样的项目看起来模块多,其实横向划分的模块之间,根本不需要打交道,只有纵向的分层之间才需要打交道,而前端项目的纵向分层一般相较于后端或者其他领域的,是比较少的。

所以这就是“伪大项目”——名义上比较大,然而真正操作起来并不大。

说真的,如果前端真的有那么多大项目,也就没有js甚至ts什么事儿了。java/c#那一系的企业级语言和框架早入侵了,还轮得到angular给前端普及“企业级编程”?

在我看来真的看起来有点大,以至于要考虑一下强类型或者其他超出lint和es6的辅助工具,甚至依赖注入等“重模式”的产品,是那种大块头单页,比如processon,我觉得这个真是比较麻烦的项目。当你说你的项目大,需要这个那个的时候,先考虑下你的项目比processon如何?

ps:

顺便说一句,在真正的大型应用场景中,三大框架的作用是完全一样的,就是作为view层渲染器。用什么框架都不会有什么区别。现在的b端架构,甚至组件库,都是倾向于跨框架的,落不落地angular,无非是看有没有必要罢了。

在这样的格局下,纠结框架选型,已经没有多大意义了。
9#
热心的小回应  16级独孤 | 2021-1-9 03:58:51
本人大学生一枚,杂七杂八的都学习过,ng看了2天的视频课程就能写出东西来,虽然很多原理还不懂,但是ng写起来真的很爽啊!!!层次很清楚,,之前ts也没有学习过,也是学习ng后才开始使用,但是一点也不影响呀,代码照样写,基础语法就那些。在各位大佬面前还是菜鸟,腻了。
10#
热心的小回应  16级独孤 | 2021-1-9 03:58:52
技术选型一般都由场景需求决定的,angular是个很好的框架,但是它的很多设计对于国内很多公司的需求而言都是过度的。
看评论,推angular的基本都是大公司的大佬,你们的项目复杂需要更好的设计和工程化。但是现在国内很多公司前端面临的问题是如何用有限的人手满足产品的需求和快速迭代修复产品问题。
老板和产品会管你用什么前端技术吗? 不会啊, 他们只想着你能完成他们的需求。
angular有什么是vue、react替代不了的?没有啊,以我的经验来看,react + ts + 良好的项目结构 + 全面的单元测试也可以让大项目更清晰鲁棒啊。
比如我只想花20块钱去麦当劳喝杯速溶咖啡,你跟我说为什么星巴克没像麦当劳一样在中国遍地都是,跟我说在星巴克里品着卡布奇洛,摩卡更优雅。
angular的学习曲线也是一个问题,有的说不难,但这只是相对而言,了解java那一套的当然觉得不难。你跟一个纯前端去说rxjs,去说依赖注入,他开始不是一脸懵逼?

11#
热心的小回应  16级独孤 | 2021-1-9 03:58:53
如果一个东西好那就应该火,那根本就不应该有js这个语言的火热
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3118703
帖子:623848
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP