码迷,mamicode.com
首页 > Web开发 > 详细

AngularJs 1.x和AngularJs2的区别

时间:2016-08-09 18:47:25      阅读:568      评论:0      收藏:0      [点我收藏+]

标签:

AngularJS  2 尽管还在Alpha阶段,但主要功能和文档已经发布。让我我们了解下Angular 1 和 2 的区别,以及新的设计目标将如何实现。

1.从移动app开发上面分析:

Angular 1.x 专注于web开发,没有涉及到移动这方面的内容,还好后来杀出个程咬金IONIC移动app开发框架,让angularjs1.x很好的支持了移动开发

Angular 2目标:原生移动支持 – iOS 和 Android

Angular 2 会有两层,应用层和渲染层。例如一个组件可以用不同的 @View 修饰器修饰,根据运行环境可以在运行时生效。

与 React Native 一样,Angular 2 支持:

一次学习,到处书写。这意味着创建原生应用时可以重用你在创建 web 应用时学习的知识。尽管总是有些区别。

2.从服务器端渲染提供支持分析:

支持服务器端的渲染对于搜索引擎的优化和用户感知体验来说是非常重要的;在一个比较大型的Angular 1 的应用中,即使使用了预先定义的缓存模块,我们可以清楚地看到当应用开始启动时,页面的加载过程。

这时候看来 Angualr2 的这部分特征不是很清晰明朗,但是这种思路或许可以从以下几个方面得到体现:

启动开始, 同时所有的组件都被绑定

而渲染没有实现

一个页面在服务器被渲染后 , 然后发送到客户端

Angular 将会把它解析 ,接着会把解析后的页面注入到 DOM 中,这样就避免了出现闪烁的效果

3.从依赖注入分析

在Angular 1  的世界里,依赖注入在构建多模块应用时是一项技术的飞跃, 但是在一些极端的案例中,如果不做出一些重要的变化是不能解决这些问题的。

Angular 1.x 包含对象全局池

Angular 1 其中一个 DI 案例中每个应用仅有一个对象全局池。这就意味着,如果说主路由 loadsbackendService 我们导向了路由 B,可以延迟加载其他服务指定到这个路由。

问题就是,我们说可以延迟加载一个 secondbackendService,使用完全不同的实现:这就会重写第一个!当前还没有办法同一名字有两个不同实现的两个服务,这就会阻止用一个安全的方式从 Angular 1 实现延迟加载。

Angular 1.x 的多重依赖注入机制

在 Angular 1 中, 我们可以使用在多重地方使用不同的方法进行注入:

在链接方法中通过位置注入

在直接定义中通过名字注入

在controller方法中通过名字,等等。

Angular 2 将会作出怎样的该进

而在 Angular 2 中有且仅有一种依赖注入机制: 在构造函数中通过类型注入。

constructor(keyUtils: KeyboardUtils) {
        this.keyUtils = keyUtils;
    }
});

事实上,如果只有一种机制,那么它将变得更加容易学习。同时这种依赖注入器是类似层级结构,在不同层次的组件树,有可能实现对相同类型的不同实现。

如果一个组件没有定义依赖,它会代理给上层注入器查找依赖,依次往上。这让 Angular 2 提供原生的懒加载成为可能

4.从主要目标分析

 

AngularJs 1.x和AngularJs2的区别

标签:

原文地址:http://www.cnblogs.com/chrisghb8812/p/5754168.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!