目录

  • 一. 漫谈Angular
  • 二. 如果你还在使用Angularjs
  • 三. 我计划这样学习Angular技术栈

一. 漫谈Angular

Angular,来自Google的前端SPA框架,与React,Vue并称前端框架的三驾马车,前些日子刚发布了7.0版本。它是一个十足的革命者,每一次亮相,都会把新的思想和软件层面的实现提供给开发者,从Angularjs1.0时代推翻jQuery的统治地位,到Angular2.0时代基于Typescript的全面升级,再到现在每半年一个大版本的高速更新迭代,不断革新着前端代码的编写方式,也推动着前端开发工程化和正规化的发展,可以说Angular一直在用行动诠释着自己的孤傲和才华。

Angular非常喜欢引入和传播思想层面的概念,它把那些被公认为正确优雅且有助于工程实践的事物带给前端,而并不在乎这些事物来自前端或者后端,也不在乎新的概念起源于哪个编程语言,它不发明概念,只是概念的搬运工,它似乎总是在说“这个想法是对的,那我们在Angular里实现它吧”,造成的直接结果就是学习曲线异常陡峭,许多初级和中级的开发者浅尝辄止,直接弃坑投奔ReactVue阵营,所有的创新都会面临这样的窘境,但Angular似乎并不在乎,升级迭代的速度反而更快了。事实证明这种精英门槛思维是正确的,它的确让很多初中级开发者无所适从,但同时也让中高级前端开发者和从后端转到前端开发的工程师受益,工程化的工具面向对象的思想高仿Java的语法强类型的限制,一个个特性都对开发团队的整体素养提出了更高的要求,同时也让代码的质量也有了更多的保障。

Angular是有生命的,与其说它是一个框架,倒不如说它是一个老师,不仅教授编程,也传播思想,严厉却有活力。如果说Vue能激发开发者的兴趣,让你快速上手拿出作品,React能够强迫开发者深耕javascript语言本身的特性和组件化思想,那么Angular带给前端开发者的,更多的是正统的面向对象开发和软件工程的思维方式,它逼迫你改变散漫的编程习惯,强迫你学习新的实现方式,渐渐地你甚至忘记了自己是一个前端,那么恭喜你,说明你已经脱离了初级水平。

如果一件事情是软件工程师应该懂的,那么你就应该懂。在我眼里,这才是Angular带给前端开发者最有价值的思想,因为内心深处的自我认知和定位会决定一个人未来所能达到的高度。

二. 如果你还在使用Angularjs

提到Angular体系,许多开发者由于入行较晚的缘故,很有可能还在使用Angularjs1.X版本进行开发或维护,并没有必要觉得自卑或者沮丧。Angular的开发者并不见得就比Angularjs1.X的开发者更厉害,不夸张的说,Angularjs1.X中所包含的精华知识对很多开发者来说可能一辈子都学不完,你需要关注其底层原理,把知识点延伸开去学习,而不只是每天没完没了地写页面绑事件发请求然后自我陶醉。

Angularjs1.X被认为是模块化的开发框架,而Angular,Vue,React被认为是组件化的框架,从常见语法的角度来看的确是这样,但这并不代表Angularjs1.X不能进行组件化开发,只是门槛略高,Angularjs1.X中组件化的实现是基于自定义指令的,1-2年经验却未尝试过使用自定义指令的开发者比比皆是,造成的直接结果就是常常一个controller中的代码好几千行,代码里混合着各种DOM操作,不仅性能很难保障,维护难度也是噩梦级别的。

如果面对这样的情况你还没有解决思路,那我并不建议你开始Angular技术栈的学习,而应该先去搞清楚如何在自己最熟悉的框架中来应用组件化开发的思想。比如面对一个4000行的controller,先考虑一下自己能不能通过拆分子路由和组合视图将其重构为3-4个大模块,这样每个大模块就有约1000行代码,再考虑一下能否把大模块拆分成3-4个小模块,controller只传入必要的启动参数,然后在小模块中实现业务自治,并通过controller来实现不同小模块之间的通讯,这样每个模块的代码量基本就可以做到小于500行,接着把DOM操作尽量整合进指令的link函数中,配合框架自身的生命周期特点来运行。如果上面的描述你不知道如何做,那么就静下心好好查查资料,学习实践一下。如果你已经知道该怎么实现,那么就可以开启Angular2的学习了,你会在其中看到很多很多自己熟悉的东西。

三. 我计划这样学习Angular技术栈

说实话,我接触Angular才2个礼拜,但是我很喜欢它,严谨,优雅,最重要的是VSCode的主题很漂亮。我的学习计划大约是这样,如果感兴趣,欢迎一起行动起来:

  • 1.慕课网的免费教程里有一个Angular的课程和一个Angular-Cli的课程,可以带你快速入门。(已完成)

  • 2.阅读官方文档:Angular中文网地址:https://www.angular.cn/

    官方文档特别详细,至少需要通读一次,然后在实际开发中遇到相关问题时再来查询。

  • 3.针对概念和原理进行专题学习

    针对概念关键词展开学习是我一贯的做法,在【一统江湖的大前端(7)React.js-从开发者到工程师】中就有提及。“学习一个框架,做一个TodoList,然后就没有然后了”,这是很多人对于新技术的学习方式,你会发现它其实并没有什么卵用,因为过半个月,你就会不记得自己做过什么了(别问我怎么知道的)。如果有实战项目,那是最好的,实战中的学习是最快的;如果没有实战项目,那么你应该关注它的核心概念和原理,响应式编程是什么东西,新的Angular中的DI系统有什么变化,修饰器是如何工作的等等,框架和实现细节或许会变化,但经典思想一般都是很稳定的,你只需要反复研究去理解它就可以了。

  • 4.分享以及撰写技术博客

    写博文并不是什么高大上的事情,只是一种习惯,一种辅助自己思考和总结的习惯。最重要的是,它可以提高你打字的速度,如果你用80%的时间敲完别人100%时间才能敲完的代码,那不就有20%的时间去学习新东西或者去写博客了么,我的时间基本就是这样挤出来的。

转载于:https://www.cnblogs.com/dashnowords/p/10087041.html

【Angular专题】——(1)Angular,孤傲的变革者相关推荐

  1. angular 缓存 html5,Angular 如何及时更新客户端缓存?

    如果你是 Angular 新手 或者对 Http 缓存机制理解不清晰 使用 Angular CLI 开发 Angular 请继续往下读. 背景 在 Angular 开发的过程中, 我们经常会发布新的功 ...

  2. angular java_带有Angular JS的Java EE 7 –第1部分

    angular java 今天的帖子将向您展示如何使用Java EE 7和Angular JS构建一个非常简单的应用程序. 在去那里之前,让我告诉您一个简短的故事: 我必须承认,我从来都不是Java语 ...

  3. linux无缝升级的版本,Angular 1 和 Angular 2 集成:无缝升级的方法

    已经有了 Angular 1 应用程序,正在想着怎么把它升级到 Angular 2?看看我们是怎么样支持递增升级的. 摘要 好消息. 我们计划在同一应用程序上允许 Angular 1 和 Angula ...

  4. [Angular 6] 初学angular,环境全部最新,[ ng serve ] 不能启动,卡在 95% 不动 => 解决方案

    [Angular 6] 初学angular,环境全部最新,[ ng serve ] 不能启动,卡在 95% 不动 => 解决方案 参考文章: (1)[Angular 6] 初学angular,环 ...

  5. Angular开发之——Angular介绍(01)

    一 概述 Angular是什么 AngularJS和Angular关系 Angular特性 Angular的发展历史 Angular学习建议 二 Angular是什么 Angular(读音[ˈæŋɡj ...

  6. Angular: 升级Angular 14到Angular 15

    N个月前写过一篇Angular: 升级Angular 13到Angular 14 的文章.现在Angular已经发布到了V16(非GA版本),那是时候把Angular项目升级到Angular 15了. ...

  7. Angular: Material Design Angular教程:Material设计 Lynda课程中文字幕

    Angular: Material Design 中文字幕 Angular教程:Material设计 中文字幕Angular: Material Design Angular Material是UI组 ...

  8. 【Angular专题】 (3)装饰器decorator,一块语法糖

    一. Decorator装饰器 修饰器是ES7加入的新特性,Angular中进行了大量使用,有很多内置的修饰器,后端的同学一般称之为"注解".修饰器的作用,实际上就是设计模式中常说 ...

  9. 【Angular专题】——(2)【译】Angular中的ForwardRef

    原文地址:https://blog.thoughtram.io/angular/2015/09/03/forward-references-in-angular-2.html 作者:Christoph ...

最新文章

  1. python伪造邮件发件地址_python写一个邮箱伪造脚本
  2. linux生成ext4镜像,mkfs.ext4生成分区镜像自动把文件转成了sparse怎么破?
  3. MyEclipse配置Tomcat(图解)
  4. Qt文档阅读笔记-QWindow的进一步认识
  5. (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节5:假脱机(SPOOLing)技术
  6. 【C语言】Find The Single Dog(标志变量的使用)
  7. 都知道李嘉诚先生是一个有钱人
  8. [转]六种删除数据库重复行的方法
  9. 【OpenCV学习笔记】【类型转换】一(IplImage和cv::Mat的类型相互转换)
  10. CC2500 pcb调试记录
  11. Excel快捷键大全之功能键合集
  12. 永磁同步电机数学模型
  13. vue使用甘特图(实现树形结构/一条数据显示双时间轴)
  14. 公司邮箱登录入口哪个方便,邮箱移动办公哪个最好用?
  15. EMV学习过程中问题解决及汇总
  16. 解决最近easyui官网不能访问问题
  17. 平缓的banner图片切换效果
  18. html中的input框中的value值到底是什么
  19. 浅谈:智能化变电站在线监测系统
  20. 不小心将 U 盘抹成 APFS 格式,应该如何恢复?

热门文章

  1. 动手学深度学习(PyTorch实现)(二)--softmax与分类模型
  2. GitHub in vs2010、vs2013
  3. 7-3 括号匹配 (15 分)
  4. java applet鼠标点击事件_Swing 鼠标单击事件?
  5. 哈夫曼算法(最优二叉树)
  6. Python中判断回文数
  7. selenium java项目_1)selenium+ java集成,待深度项目流程应用
  8. Python连接MySQL数据库之pymysql模块使用
  9. 统计字符串中出现最多的单词和次多的单词
  10. C常量指针 与指针常量区别