AngularJS已然成为Web应用开辟天下里最受欢迎的开源Java框架。自创建以来,见证其乐成的是惊人的经济增长以及团体的支持与采取——包罗个人开辟者、企业、社区。
Angular已经变成一个构建复杂单页面应用的客户端MVW框架(Model-View-Whatever)。它在应用测试和应用编写方面都扮演紧张脚色,同时简化了开辟过程。
Angular如今的版本为1.3,该版本稳固,并被谷歌(框架维护者)用于支持浩繁应用(据估计,在谷歌有高出1600个应用运行于Angular1.2或1.3)。Angular2.0正式公布与客岁10月份的尼日利亚集会会议上,该版本不会是一个复杂的庞大更新。
为什么推出Angular2.0?
在进一步讨论Angular2.0(估计发布日期为2015年底)之前,让我们简单的思考下新版本背后的哲学。Angular2.0开辟始于办理以下题目:
移动:新的版本将专注于移动应用的开辟。依据是它更轻易处理惩罚桌面方面的事变,一旦挑衅涉及到移动(性能、加载时间),注意这方面会使题目得到办理。模块化:各个模块将从Angular的核心中移除,从而得到更好的性能。这意味着你可以选择你必要的零件。当代化:Angular2.0将把ES6和"常青"当代欣赏器(主动更新到最新版本)作为目标。这意味着开辟者可以专注于业务范畴相干的代码。有哪些争议?
在尼日利亚集会会议上并没有提及迁徙到2.0版本的途径。同时也指出跳转到2.0版本将会冲破原有的1.3版本应用,不会有任何的向后兼容性。自从当时开始开辟者社区不停充斥着不确定性和推测,一些开辟者也开始质疑是否值得开始一个新的Angular1.3项目。
有哪些改变?At
At是ES6的一个父集,被用于开辟Angular2.0。它是由Traceur编译器(连同ES6)处理惩罚来天生ES5代码并用Type范例语法来天生实行时间的断言,以此来代替编译时的查抄。不外At并不是逼迫的,你仍旧可以或许利用纯Java/ES5代码代替At来编写Angular应用。
改善依靠入驻(DI)
依靠注入(Dependencyinjection)模式的根本头脑是客户类Client不消本身来初始化它所依靠的成员变量IServer,利用一个独立的对象创建IServer得当的实现类并将它赋值给Client的成员变量。它对模块开辟与组件隔离特别有益。Angular2.0将会办理Angular1.X所存在的这个方面的题目。添加丢失的的特性,如childinjectors和lifetime/scope控制。
Annotations
At提供工具关联元数据和功能。这有助于构建提供须要信息到DI库的对象实例(查抄相干元数据时调用一个函数或创建一个类的实例)。它还轻易通过提供一个注解重载参数数据。
ChildInjectors
一个childinjector继承了其父类的全部性能服务。根据要求,差别范例的对象可以被调用,而且主动覆盖差别的范围。
实例范围
改进的DI库将以实例范围为特性,这在利用ChildInjectors和本身的范围标识符时变得更加强大。
模板和数据绑定
在开辟应用中,模板和数据绑定将齐头并进。
动态载入
这是当前Angular版本所缺失的一个特性,不外将在Angular2.0中出现。这将让开辟者可以在繁忙中添加新的指令或控制器。
模板
在Angular2.0中,模板编译过程将是异步的。由于代码是基于ES6模块规格,该模块加载器将通过简单的引用组件界说来加载依靠关系。
指令
在Angular2.0中将会出现三种指令:
组件指令——这些将通过Java、HTML或一个可选的CSS样式表的封装逻辑创建可重复利用的组件。装饰指令——这些指令将被用来装饰元素(比方添加一个工具提示,或利用ng-show/ng-hide来表现/隐蔽元素)。模板指令——这些将把HTML改变为可重复利用的模板。模板的实例化以及嵌入到DOM可以完全由指令控制。如许的例子包罗ng-if和ng-repeat。路由方案
初始的Angular路由是被计划用于处理惩罚一些简单的环境。然而,随着框架的发展,越来越多的功能被添加。在Angular2.0中路由已经是可扩展的,它将包罗以下根本功能:
简单的基于json路由设置;优于设置的可选协定;静态的。参数化的路由模式;URL分析器;支持查询字符串;利用推送状态或Hashchange;导航模子(天生一个导航UI);文档标题更新;404路由处理惩罚;位置服务;汗青操纵。
如今,让我们来看看那些让Angular2.0到达新高度的路由特性:
子路由
子路由将把应用的每个组件通过为它们提供各自路由的方式转换成更小的应用,这将有助于封装整个应用的特性集。
屏幕激活
这将资助开辟者通过一组can*回调更出色的控制导航的生命周期:
canActivate——答应/制止导航到新的控制器;activate——相应乐成到新的控制器的导航;canDeactivate——答应/制止导航阔别旧的控制器;deactivate——相应乐成阔别旧的控制器的导航;
这些回调将答应开辟者返回Boolean值或一个下令(为了更低条理上的控制)。
计划
全部的这些逻辑都是利用流水线布局构建的,使得它非常轻易将本身的步调添加到流水线中或移除默认的东西。别的,它的异步特性将答应开辟者利用服务器哀求举行身份验证或为控制器加载数据,不外这还在规划中。
日记
Angular2.0将包罗一个被称为diary.js的日记服务——一个非常有效的特性,丈量你在应用中时间耗费在那边。
Scope
$scope将从Angular2.0中移除,取而代之的是ES6类。
结论
随着发布日期的邻近,围绕Angular2.0的高兴和声音将会加剧。是否冲破改变是一件功德?我们无法知道,不外反对者感到告急是可以明白的,由于显着缺乏迁徙的筹划。Duang的一下就来了。不外其既然要来了,我们可以做的就是积极的欢迎它。
转载来自于https://www.iteye.com/news/30278
我要评论