背景

WEB前端的技术,用一个词来形容,可谓——“乱象丛生”!哪怕是在前端行业深耕了十几年的老司机,也是一脸的懵逼, 到底学什么是好? 暂不说 Angular、
React 、Vue,这三个学哪个是好, 仅就 Angular来说,就有 AngularJS 1. X 与 Angular 之分。
从表象上来看,它们只是版本之分,但其背后,是两门不同语言的纷争,那就是 JavaScript 与 TypeScript之间的差异!

所以说,要想理解 AngularJS 与 Angular的区别,首先要了解 JavaScript 与 TypeScript之间的本质区别。

他山之石: 观望下 Apple 的 Objective-C 与 Swift

在讲述 JavaScript 与 TypeScript 之间的区别之前,我们先来看一段苹果公司的旗下的语言: Objective -C 与 SWIFT
语言的发展历史。

Apple 公司一向秉承创新, 原本用的好好的 Objective-C, 在2012年推出 swift 语言, 5年过去了。 Swift
版本也经历了几次大的改动,其优势不断在网上煽情,结果呢? 国内公司就是不买账,尽管 Swift 编译从入门到精通的书已经遍地都是,但用Swift 开发 iOS
APP, 可谓“寥寥无几” !其原因主要有以下几个方面:

考虑已有项目的延续性: Objective-C 已经有20年的历史, 从2009年开始,人们普遍用 Objective-C 做开发,可以说,几乎每一位学习
iOS APP 开发的人,都是从Objective-C 开始的。 公司的产品也都是用 Objective-C 开发的。 现在突然要换成 Swift,
你得给出个理由吧。 总不至于说 Swift 是新推出的、轻量级的语言,这是没有说服力的。 一个新技术,从诞生到推广,必须给出足够多的选择理由。
新的东西能做的,老的也能做的,其差异微乎其微,这就没有什么被选用的动力了。要知道,
采用一项新的技术,就意味着要踩无数个坑,老板关注的是业务,至于采用什么技术,只要是成本低,也能用,不会刻意强求员工改技术。

考虑下学习曲线 : 熟悉一门新的技术,需要一个踩坑的过程;了解下容易,用它做出产品来,一个字——“难”!

新型技术,需要生态的支持: 仅凭热情是不够的, 并不是说,用新的技术,做几个demo,就算验证了技术的成熟度。这还得需要周边生态的支持。 比如:
遇到问题,有多少资料可查阅; 有多少第三方库可支持,这都是要考虑的。

#### AngularJS的历史变迁

再回到 JavaScript 与 TypeScript , 当听到 AngularJS改名了,2.0 版的 Angular 去掉了 JS , 因为 1.X
是 AngularJS。 JS 是 JavaScript的缩写, AngularJS 表明,它是用 JavaScript 编写的; 而 Angular呢?
是用 TypeScript 语言编写的。 两种语言完全不同,你这明白了为什么 1.X 与 2 的版本差异有多大了 吧。 这与苹果的 Objective-C 与
Swift 的历史,惊人的相似。

TypeScript 出身于微软名下, MicroSoft 无愧于是一家软件公司,推出的软件产品真是不少, 但能用起来的,在互联网行业,真的不多。 比如:
微软家的 C# (.net),这次推出的 TypeScirpt,其前景如何呢? 让我们拭目以待。

再来看下JavaScript 与 TypeScript 的区别

JavaScript 可以直接在浏览器中运行代码;
TypeScript不能直接在浏览器中运行代码,必须经过编译,所以必须使用构建工具。

(1 )对比结果: TypeScript 并没有带来什么便利,而学习 TypeScript 可不是一朝一夕就能搞定的,这得考虑下学习曲线了。

(2 )MVC vs. MVVM 设计模式之争: AngularJS 采用 MVC,而 Angular 采用 MVVM ,采用面向组件的开发模式。
二者仅仅是设计模式不同, 而MVC是再成熟不过的设计模式了。 MVC并没有什么短板。

小结:

整体来看,因为 Angular 2 及以上版本,使用 TypeScript 编程语言,导致前端开发工程师不容易上手,AngularJS
从2009推出,到现在已经有了十年的沉淀,相比 React 是 2013年推出,从IT发展周期来看, 相差了5年。

直白地说, 市面上,使用AngularJS 开发的产品实在太多了。 它需要持续地维护,不断的迭代。 试想,在这种情况下,有哪个老板轻易冒这个险,把原本好好的
AngularJS 框架改为 Angular呢?