Angular1.0和Angurlar2.0的区别?

来源:互联网 发布:网络交换机千兆百兆 编辑:程序博客网 时间:2024/06/01 08:59
首先,啥也不说,月笙之要推荐两本书,来自大漠穷秋,据说曾和月笙之在同一个公司上过班,想想也是前辈了,膜拜下。
推荐书和网站:
angular1.0:《用AngularJS开发下一代Web应用》大漠穷秋
angular2.0:《迈向Angular2:基于TypeScript的高性能SPA框架》大漠穷秋
angular1.0 :http://docs.ngnice.com/guide/
angular2.0中文的官网:https://angular.cn/docs/ts/latest/(我的2.0入门就是在这个网站学滴)

区别:http://www.open-open.com/lib/view/open1473923872636.html


1.下面言归正传:月笙之目前也是入门级别,在这里写区别有点担心被扔砖,可是我还是要写,目的在于探讨以及和大家交流,小小程序媛不才,说错的地方,还请大家及时品评指正,谢谢!

1.Angular1.0caiyong ;">需要编译成javascript之后才能在浏览器上加载。

2.Angular2.0不兼容1.0版本,是与Angular1.x完全不同的新框架;

3.Angular2.0的WebCompent标准允许我们创建自定义的标签,并增加行为;

4.JavaScript程序运行在单线程里面,依次处理,而2.0引入WebWorkApi,它允许在另一个线程里面执行计算密集型任务,释放主线程。

5.Angular1.0没绑定一个数据都会添加一个新的监视器,大量的监视器会拖慢性能。

6.Angular1.x的数据绑定机制是利用$scope对象来实现,而2.0直接删除了$scope对象,所有表达式都在特定的UI组件的上下文执行,不用显示注入$scope.

2. Angular2 有哪些重要变化?

有了 Component 这个统摄全局的概念之后,我们来看看与 Angular 1.x 相比 Angular2发生了什么变化。

 

第一点:Angular2 删掉了 $scope 的概念

在 Angular 1.x 里面,$scope 是一个相当强大又相当可怕的东西,由于在很多需要回调的场景之下,脏值检测机制无法感知到$scope 上发生的变化,因此经常需要开发者自己手动调用 $apply() 方法。典型的场景有:事件回调、setTimeout回调、Ajax 回调等等。Angular2 响应社区的强烈呼吁,删除(或者说隐藏)了 $scope的概念,开发者不再需要感知到它的存在。另外,Angular2 在底层引入了zone.js,所以即使在各种回调函数中修改数据模型也不需要手动调用 $apply() 方法了。

 

第二点:删掉了 ng-controller 指令

这就意味着 Controller 不再是一个独立的组件,它合并到了 Component内部。这是一个非常大的演进,因为从大量的实战经验来看,在复杂的业务逻辑中复用 Controller几乎是不可能的。在其它同类的前端框架里面也有类似的处理手法,例如 Backbone 虽然也强调 MVC 的概念,但是它也没有定义单独的Controller 类,Controller 也是合并在 View 里面编写的。

 

第三点:大幅度演进了脏值检测机制

众所周知,“双向数据绑定”之所以能运行,是因为 Angular 底层有“脏值检测”这么一个神奇的机制。而实际上 Angular 1.x里面的脏值检测机制的运行效率非常差,这就是为什么大家一直在抱怨绑定的对象不能太多、太深的原因。Angular2大幅度演进了这一机制,不仅引入了单向绑定,还增加了各种检测策略,例如:只检测一次、利用 JIT动态生成脏值检测代码等等。毫无疑问,有了这些工具之后,数据绑定效率不再是问题。

 

第四点:嵌套路由

Angular 1.x里面有一个非常讨厌的问题,框架内置的路由机制不支持嵌套使用,这就导致开发者在日常的开发过程中不得不依赖于第三方的 ui-router库。Angular2 没有这个问题了,因为 Angular2 的路由是基于 Component 的,天然支持嵌套。

 

第五点:依赖注入机制演进

Angular2 中的依赖注入写法与 Java 中的注解(Annotation)非常类似,如果你熟悉 Spring注解的用法,那么使用 Angular2 的依赖注入几乎没有学习成本。当然,概念上是有区别的,Angular2 中叫Decorator(装饰器),更加贴近 Python 里面的 Decorator 的概念。

 

第六点:框架整体上基于 TypeScript 开发

这是最大的一个变更,有很多人担忧这样是否会带来比较大的学习成本,实际的情况并非如此。因为 TypeScript 的语法与 Java或者 C# 非常类似,因此对于从后端转过来的开发者来说,学习这门语言几乎是没有难度的。

还有一个重要的方面需要大家注意:TypeScript 是 Microsoft 开发的一门语言,Google+Microsoft这样的组合会产生多么强大的推动力,大家可以想象。Google 和 Microsoft 本身都是重要的浏览器厂商,Chrome 和 IE加起来的市场份额占据了一大半的市场份额,未来如果两款浏览器内建 TypeScript 引擎,很显然 TypeScript 和Angular的前景将会一片光明。这一优势是大量的同类技术框架根本无法企及的,因此大家在做技术选型的过程中需要综合考虑这些情况作出理性的决策。

 

第七点:Angular 1.x 和 Angular2 都自带 UI 控件库

两个版本的 UI 控件库都实现了 Material Design 所提出来的设计风格,Material Design 是 Google提出来的一种 UI 设计原则,终极的目标是:用一套 UI 设计规范来兼容各种各样的设备,例如桌面、平板、大屏幕的电视、车载系统、甚至watch,从而保证用户体验的一致性。

针对 Angular 1.x 的 Material Design 实现请参考以下链接:

https://github.com/angular/material。

针对 Angular2 的 Material Design 库,目前已经处于 alpha状态,预计在本月(2016-09)底发布第一个正式版本,更多详情请参考:

https://github.com/angular/material2。

在现代 Web应用开发中,尤其企业应用场景下,UI控件库是必不可少的组成部分。无论框架的设计理念多么前卫,我们最终都必须面对真实的业务开发,这里最大的现实就是:不可能让每一个企业或者团队都维护一套自己UI 组件库。

我们知道开发一套能完美兼容各种屏幕的 UI组件库需要消耗大量的时间和金钱,而长期维护这样一套体系更是无比枯燥的任务。所以说,Angular默认提供免费的UI组件库这一点是目前市面上很多同类的技术所无法比拟的。

 



0 0