angular难吗?

Angular 学起来难吗?

答案是:不知道。准确的说应该是 "因人而异"。我曾经说过:任何卖包治百病的大力丸的都是骗子,任何逢人就说一项技术很简单的也是骗子 —— 你连对方的技术背景都不问就敢说很简单,这跟医生不诊断就开药有什么区别?不过是莆田系的那一套罢了。

对纯而又纯的萌新……

对于那些没有任何技术背景(无论前后端还是App)的萌新来讲,Angular 是很难的。Angular 的设计目标是让你写 "好" 代码,而不是写 "出" 代码。所以对于萌新来讲,要写好 Angular,不但要学会关于 Angular 的概念、知识,更重要的是得学会 "写程序" 。后者才是最难的。

对于萌新来说,从 Angular 学起就像是绑着沙袋练长跑,开始确实会比较累,但是到了学成的那一天,你会发现自己身轻如燕。重要的是,它会送给你业界在多年的实践中总结出来的一些经验和教训。

如果一个萌新是在一个有高手带队的团队中学习,那么你是一个幸运儿 —— 你只要假装绑着沙袋跑步就行了,其最终效果却和真的绑着沙袋时差别不大。

总之,对于纯而又纯的萌新来说,学习 Angular 的关键是:多想、多练、高手带,等你摘下沙袋的那一天,你才会发现这世界是多么的美好。

对有其它技术背景的萌新……

如果你只是个前端萌新,但已经是一个Java高手、.NET高手或 iOS / Android高手,那么恭喜你,你将有机会 "平移" 到 Angular 中。当然,除非你在一个团队中,否则仍然要面临很多的挑战,但这种挑战主要不是来自 Angular 本身,而是来自 Web 生态。

事实上,我认为任何一位开发人员想要成为高等级的架构师,都至少需要掌握一门后端技术和一门前端技术,否则你怎么能设计好跨前后端的架构呢?以我为例,四年前我还是一个纯而又纯的后端,然后利用对后端技术的理解在两周内平移到了 AngularJS 中,而今年我又利用对 Angular 的理解在两周内平移到了后端的 Spring Cloud 技术体系中。我相信每一个人都有机会做到这种平移。

略显尴尬的是中级水平的前端萌新。

中级萌新对原本的技术还没有用到融会贯通的程度,而学 Angular 时视野又不够高,看不出这些技术之间的相通之处,这时候就可能遇到瓶颈。

这是挑战,也是机遇。

那些你在原有技术体系下没能理解透的技术,到了新的技术体系下,可能会看到它被活学活用的例子,这也许就是你的灵犀一指。当然,刻苦努力是必不可少的,我始终相信《一万小时天才》理论才是正道,天才固然有,但我自己不会是那个幸运儿。

对团队领袖……

Angular 做出了很多技术选择。这些选择都倾向于进行更有效的团队协作、长期演化时更好的可维护性以及需求频繁变化时更高的可扩展性。这些选择都不能让你短期内写程序更快,但可以更好。所以,如果是一个或几个萌新组成的短线项目,没有高手坐镇,成果也没有计划使用超过一年,那么,我不建议你们使用 Angular —— 除非你就是想把它当做 Angular 的学习项目。

反之,如果你要实现一个长线项目,并且对代码质量的要求比较高,那么我会推荐你使用 Angular。

通常,只要一个 Angular 高手就可以带起一个高效的团队:

Angular 有完善的 AOP 机制,可以统一处理公共需求,比如登录、日志等等,而这些只需要一个高手就能搞定,萌新只要根据业务需求实现功能就可以了,而不必关心那些复杂的全局性功能,轻松加愉快。

Angular 有着开箱即用的路由和表单,这些都是在多年的实践中总结出来的,不用你去评估筛选第三方库,也不用担心第三方库的质量。

Angular 使用 TypeScript 作为主语言,它既有动态语言的灵活,也有静态语言的严谨,萌新在 IDE 中就可以直接发现很多种错误,而不用等运行起来甚至发布给用户之后才发现。也许,你再也不用担心半夜被老板叫起来改 BUG 了。

总而言之,对同等资历的团队而言,Angular 胜在代码质量高、长线成本低,这是它得以成为 Google 的 AdWord(这是 Google 的主要收入来源) 等系统的前端框架的重要因素之一。

呃…… HR 的因素

有时候,技术选型还需要考虑公司的 HR 策略。

有些公司的人员流动性很强,这时候选择 Angular 有利有弊。

好的一面是不管谁来都得老老实实照着规范写,不照着写你都编译不过去,因此可以用技术手段强制保障代码的质量基线。同时,Angular 本身的难度也会替你筛掉一批混子,省下一些面试成本(我就曾面试低端程序员面到昏天黑地、怀疑社会,对此我深有体会)。

坏的一面是你的平均用人成本会比较高,因为没有几个培训班敢拍着胸脯说一个月就能把纯而又纯的萌新给培训成有生产力的 Angular 程序员。同时,你的这些工作可能不容易外包出去,因为普通的外包公司是不会投入资源去培养 Angular 程序员的(也许少量骨干除外?)。所以,对于一些短期的、周边的系统,用 Angular 往往弊大于利。

然而……

然而,难不难其实是个伪命题。就像本文的标题所暗示的那样:小马过河,自己试。不要听老牛说浅就觉得浅,也不要听松鼠说深就觉得深,这又不是什么人命关天的大事,自己静下心来花一天试试不就知道了?记住,所有号称中立却不问你的技术背景和意愿的对比、评测,都是骗子。别被忽悠,这是我在十九年的码农生涯中总结出的最重要的经验教训之一。

总之

纸上得来终觉浅,绝知此事要躬行。

我一直认为,对于一个程序员来说,决定他前途的不是已有的知识甚至天赋,而是勇气和眼光。你是否愿意尝试新事物?你是否会因为别人说难而放弃?你是否会愿意仅仅为了满足好奇心而去探索一门新知识?在这个日新月异的时代,这些品质决定了你的深度与高度,也决定了在十年后你到底是把一年的经验重复了十次,还是真的有了十年经验,决定了你是否能有能力跳出技术的限制,看到日新月异的技术背后,那些不变的思想内核。

Image placeholder
前端答疑
未设置
  76人点赞

没有讨论,发表一下自己的看法吧

推荐文章
有vue基础学react难吗?

React是一个用于前端开发的开源JavaScript库,由Facebook开发。其基于组件的库使您可以为Web应用程序构建高质量的用户界面。vue.js是一个构建用户界面的渐进式框架。采用自底向上增

angular国内用的多吗?

angular在国内为什么用的人会少?大家会认为入门高,下面主观的总结了以下几点:Google没有营销好,刚开始Angular2出来的时候没有很好的照顾Angular1.x的用户,导致大量用户流失到其

angular和vue是什么?

Angular是什么?Angular是一个基于TypeScript的开源Web应用程序框架,一个用HTML,CSS和JavaScript/TypeScript构建客户端应用程序的框架。Angular是

angular和vue之间有什么区别?

相同:1.数据绑定:vue和angular绑定都可以用{{}}2.都支持内置指令和自定义指令3.都支持内置过滤器和自定义过滤器。区别:1.学习成本和API设计:vue相比于angular来说更加的简单

angular和vue先学哪个?

angular和vue先学哪个?先学vue框架。其实react、angular、vue三个框架只要学会一个,短时间内掌握上手其他两个都不是较大的困难。vue相比于angular来说更加的简单。angu

angular material怎么安装?

怎么安装angularmaterial?1、前期准备:npm(安装node即可),angularcli脚手架2、自建项目ngnewmy-app//my-app项目名字 nggcproject//组件名

angular项目怎么运行?

angular项目怎么运行?1、新建一个项目。2、使用组合键【win+r】,打开运行面板,输入cmd3、打开cmd命令提示符窗口,使用cd命令进入项目所在文件夹例:cdmy-dream进入项目my-d

angular的注入器是什么?

在依赖注入和依赖查找的时候注入器和提供器就需要使用。接下来就简单介绍一下注入器和提供器。注入器Angular提供的类,一般不需调用,会自动通过组件的构造函数注入。1.当一个提供器提供在模块中时,他是对

angular2怎么添加事件监听?

angular2怎么添加事件监听?在模板中为元素添加事件监听很简单,使用一对小括号包裹事件名称,并绑定到表达式即可:上面的代码实例为DOM对象h1的click事件添加监听函数onClick()。另一种

正则表达式 Regular Expression

历史正则表达式出现于理论计算机科学的自动控制理论和形式化语言理论中。在这些领域中有对计算(自动控制)的模型和对形式化语言描述与分类的研究。1它可以转化成形式化语言或者确定型自动机。它们是语义上等价的,

聊聊chronos的pullFromDefaultCFAndPush

序本文主要研究一下chronos的pullFromDefaultCFAndPushpullFromDefaultCFAndPushDDMQ/carrera-chronos/src/main/java/

不会英语能学编程吗?能学会吗?

  许多人却对编程有刻板印象认为编程学起来难,工作加班辛苦,技术含量高,不会英语学编程到底难不难?不会英语能不能学会?   不可否认编程中用的是英语,但只要掌握基础的英语知识就够用了。当看到大段的代码

Spring-SpringAOP原理,手写Spring事务框架

一、Spring核心知识Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopm

利用 consul+nginx-upsync 实现动态负载

如果Nginx遇到大流量和高负载,修改配置文件重启可能并不总是那么方便,因为恢复Nginx并重载配置会进一步增加系统负载,并很可能暂时降低性能。而一个个修改配置文件也是很容易出错和费时间的操作。 这时

利用 consul+nginx-upsync 实现动态负载

这是前一段时间学习的课程上面的,自己实际操作了一下,详细操作及说明如下。如果Nginx遇到大流量和高负载,修改配置文件重启可能并不总是那么方便,因为恢复Nginx并重载配置会进一步增加系统负载,并很可

002.07 MineSweeper - PsSimleGUI 的应用

建檔日期:2019/12/07 更新日期:None 语言:Python3.7.2,PySimpleGUI4.6.0 系统:Win10Ver.10.0.17763主题:002.07MineSweeper

002.06 Klondike Solitaire - PsSimleGUI 的应用

建檔日期:2019/12/04 更新日期:None 语言:Python3.7.2,PySimpleGUI4.6.0 系统:Win10Ver.10.0.17763主题:002.06KlondikeSol

你了解Spring Data JPA的批量插入吗?

实现场景 有关拼团旅游的业务,里面有这样一个逻辑实现:一个拼团活动表Activity对应多个Travel旅游表,travel旅游表要分段存储前端传来的List,Travel表需将每一条数据保存入库,

Spring Boot到底是怎么运行的,你知道吗?

导读SpringBoot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较流行的微服务框架SpringCl

SpringBoot个人应用开发框架(SpringBoot版本2.1)+IDEA

前言: 此笔记为本人首个SpringBoot项目框架学习实践记录,期间参考了许多大神的笔记和心得。 参考文档如下: 项目git地址: 一、创建SpringBoot工程 1.1创建父POM工程结

搭建 Spring+SpringMVC+MyBatis 框架

SSM框架整合 pom中添加依赖 添加编辑Spring配置文件 添加编辑SpringMVC配置文件 添加编辑Mybatis配置文件 配置web.xml 1、pom中添加依赖 junit ju

String 类的 substring () 方法

截取字符串,在java语言中的用法 1.substring(intbeginIndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 参数:

再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring官方在其博客宣布,SpringBoot1.x停止维护,SpringBoot1.x生命周期正式结束。其实早在2018年7月30号,Spring官方就已经在博客进行过预告,

面试问烂的 Spring AOP 原理、SpringMVC 过程

  正文  SpringAOP,SpringMVC,这两个应该是国内面试必问题,网上有很多答案,其实背背就可以。但今天笔者带大家一起深入浅出源码,看看他的原理。以期让印象更加深刻,面试的时候游刃有余。

Nginx 之父被抓:Rambler集团声称他工作时间开发了NGINX,要求全部代码所有权

俄罗斯搜索引擎Rambler.ru声称拥有NGINX代码的全部所有权。俄罗斯警方近日突击搜查了F5Networks子公司NGINX的莫斯科办事处,NGINX公司开发了互联网上最受欢迎的Web服务器