ngular2 VS Angular4 深度对比:特性、性能
在Web应用开发领域,Angular被认为是最好的开源JavaScript框架之一。
Google的Angular团队已于3月23日发布了Angular4,而期待已久的Angular2版本则是之前版本的完全重构。
对于成熟的开发人员来说,有以上两种选择是一件很棒的事情;但是,对于处于学习阶段的新晋开发人员来说,可能有点不知如何选择。
那么,本文将会对Angular2和Angular4进行深度对比,以便帮助大家更好的了解这两个版本。
Angular2
Angular2是在2015年底发布的。接下来一起了解Angular2这个版本发布的原因以及如何将其添加到Web开发中。
这个Angular版本更加注重于开发移动应用程序,开发人员可以使用它创建跨平台的应用程序,在解决了移动应用程序(功能,加载时间等)的挑战后,Angular2可以更容易的处理桌面组件。
许多模块被淘汰出了Angular核心,这也促使Angular2具备更好的性能。Angular走向了不断增长的模块生态系统,这意味着开发者可以自由的选择所需的组件。
Angular 2.0基于ES6标准和“evergreen”现代浏览器(可自动更新到最新版本的浏览器)。在这些浏览器上构建应用,意味着可以更容易的使用Angular进行开发和优化,从而允许开发人员更专注于公司业务实现的代码。
Angular2 的特性和性能
AtScript是ES6的超集,用于帮助Angular2的开发。它由Traceur编译器(结合ES6)进行处理,然后生成ES5代码,并使用TypeScript语法创建运行时类型断言。但是,AtScript不是强制性的,开发人员仍然可以选择只使用纯JavaScript / ES5代码来构建Angular应用程序。
提升依赖注入(DI):
依赖注入(一种程序设计模式,可以通过依赖关系实现调用,而不需要生成)是一种Angular显著区别于其竞争对手的特性。依赖注入在模块化开发和元素隔离方面非常有帮助,但它的实现一直受到Angular 1.x的困扰。Angular2解决了这个问题,另外还添加了一些缺少的功能,如子注入以及生命周期/范围控制。
注解:
AtScript提供了连接元数据和功能的工具。通过在DI库中提供基本信息(可以调用函数或创建类的实例来检查相关元数据),从而简化了对象实例的构建。通过提供注入注释,使得参数信息重写也变得简单。
子注入:
子注入继承了其父级注入所有的专业服务,以及在子层次重写的能力。根据需要,在一定范围内,一些类型的对象可以被调用和机械的重写。
实例范围:
增强的DI库是由实例范围控制器组成的,当与子注入器连同范围标识符一起使用时,会更加强大。
动态载入:
这是之前的Angular版本均不具备的功能,Angular2包含了这个功能,即使在开发人员忙碌时,也能够添加新的指令或控件。
模板:
在Angular2中,模板编译过程是异步的。由于代码依赖于ES6模块,因此模块加载程序将通过在部分组件上引用它们,来加载依赖关系。
指令:
Angular2提供了三种指令:
- 组件指令:通过将逻辑封装在HTML,CSS和JavaScript中,从而使得组件可复用。
- 装饰器指令:可用于装饰元素(例如,通过隐藏/显示元素ng-hide/ng-show或添加工具提示)。
- 模板指令:可以将HTML转换为可复用的模板。该模板的实例化以及插入到DOM过程可以完全由指令创建者控制。例如ng-repeat和ng-if。
子路由
子路由将通过提供自身的路由功能,将程序的每个部分转换为更紧密的应用程序,这有助于整个程序功能集合的封装。
Screen Activator:
通过Angular 2,开发人员可以通过一系列can *回调对导航生命周期进行更好的控制。
- canActivate:它允许或阻止导航到新的控件。
- 激活:它会响应导航到新控件的成功事件。
- canDeactivate:它将防止或允许跳出旧控制器的导航。
- 停用:它会响应跳出旧控制器的成功事件。
设计:
所有这些逻辑都是使用管道架构创建的,这使得将自己的操作添加到管道中或删除默认操作变得非常简单。此外,它的异步字符允许开发人员在管道中,实现对用户进行身份验证或加载控件信息的服务器请求。
记录:
Angular 2.0包括一个名为diary.js的日志记录服务,这是一个非常有用的属性,用于测量开发人员的编码投入时间(从而允许开发人员识别代码中的瓶颈)。scope:
$scope 从Angular2中删除了。
Angular4
相比于Angular 2,Angular4的功能列表中添加了许多新功能,同时还有一些旧功能的改进。
更小更快:
使用Angular4,程序将会消耗更少的空间,并比以前的版本运行地更快。工作主要用于不断进行改进。
视图引擎:
Angular4的开发人员修改了视图引擎的代码,例如AOT创建的代码。这些修改促使视图部分生成的代码大小减少了大约60%。模板越是复杂,节省的就越多。
动画包:
Angular4的开发人员将动画从Angular的核心部分提取出来,并将它们放在独立的包中。这意味着如果开发人员不需要使用动画,就可以不创建这些额外的代码。
这个功能还能够帮助更方便的查找docs文件和使用自动完成功能。开发人员可以通过为@angular/platform-browser/animations引入浏览器动画模块,从而实现为主要的NgModule添加动画功能。
改进 *ngIf 和 *ngFor:
模板绑定语法目前支持一些少量有帮助的更改。现在,开发人员已经可以使用if/else设计语法,并分配局部变量了。
Angular Universal:
此版本是Universal团队几个月的工作成果。这个Universal版本的代码的绝大多数目前位于@angular/platform-server。
TypeScript 2.1和2.2兼容性:
Angular4开发组将Angular升级为更新版本的TypeScript。这将提高ngc的速度,方便开发人员将在编码过程中更好的进行类型检查。
模板的源映射:
每当模板中的某些内容出现错误时,都将创建源映射,为原始模板提供有意义的说明内容。
结论:
对于仍处于学习阶段的人来说,Angular会有点混乱。但对于具有Angular2知识的有经验的开发人员来说,会觉得Angular很容易使用,并且使用Angular对项目非常有帮助。
原文发布时间:2017-08-09
原文作者:葡萄城技术团队
本文来源掘金如需转载请紧急联系作者

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Angular和Vue.js 深度对比
Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面。当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强。如今,已有许多开发人员开始使用 Vue.js 来取代 Angular 和 React.js 。 那么对于 Angular 和 React.js ,开发者该如何选择呢? 下面我们会对这两种框架进行介绍和深度对比。 Vue.js 是前 Google 员工 Evan You 的开发的,并于2014年发布,现已获得了超过57,000个 GitHub star。许多开发人员都大力推荐 Vue,因为它很容易学习。如果你有深厚的 HTML、CSS 和 JavaScript 基础,那么学习 Vue.js 只需几个小时。 Vue 对开发人员最有吸引力的地方是:它的新颖、轻便,而且复杂性很少甚至没有。Vue 不但非常灵活简单,而且还非常强大,同时还提供双向数据绑定功能,就像 Angular 和 React 的虚拟 DOM 功能一样。 Vue 可以帮助开发人员以任何想要的方式来构建应用程序,这是 Angular 做不到的。 Vue.js - 多样化...
-
下一篇
Go开发工具
1.4 Go开发工具 本节我将介绍几个开发工具,它们都具有自动化提示,自动化fmt功能。因为它们都是跨平台的,所以安装步骤之类的都是通用的。 LiteIDE LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),由visualfc编写。 图1.4 LiteIDE主界面 LiteIDE主要特点: 支持主流操作系统 Windows Linux MacOS X Go编译环境管理和切换 管理和切换多个Go编译环境 支持Go语言交叉编译 与Go标准一致的项目管理方式 基于GOPATH的包浏览器 基于GOPATH的编译系统 基于GOPATH的Api文档检索 Go语言的编辑支持 类浏览器和大纲显示 Gocode(代码自动完成工具)的完美支持 Go语言文档查看和Api快速检索 代码表达式信息显示F1 源代码定义跳转支持F2 Gdb断点和调试支持 gofmt自动格式化支持 其他特征 支持多国语言界面显示 完全插件体系结构 支持编辑器配色方案 基于Kate的语法显示支持 基于全文的单词自动完成 支持键盘快捷键绑定方案 Markdown文档编辑支持 实时预览和同步显示 自定义CSS显示...
相关文章
文章评论
共有0条评论来说两句吧...