Angular2 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

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对项目非常有帮助。

原文链接:https://dzone.com/articles/angular-2-vs-angular-4-features-performance

转载请注明出自:葡萄城控件

时间: 2024-10-27 11:58:33

Angular2 VS Angular4 深度对比:特性、性能的相关文章

Splunk和ELK深度对比

转自:http://blog.51cto.com/splunkchina/1948105 日志处理两大生态Splunk和ELK深度对比 heijunmasd 0人评论 5312人阅读 2017-07-17 09:44:59 随着Splunk越来越被大家熟知和认可,现在市面上也不断涌各种同类产品,作为大数据搜索界的翘楚Splunk和ElasticSearch,绝对值得我们去学习,探索和使用,因此为了造福Splunk的铁粉和新粉们,小编特邀了Splunk的资深架构师,江湖人称"陶指导"的陶

mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据

1.php中fastcgi和php-fpm是什么东西 最近在研究和学习php的性能方面的知识,看到了factcgi以及php-fpm,发现我对他们是少之又少的理解,可以说几乎是一无所知,想想还是蛮可怕的.决定仔细的学习一下关于这方面的知识. 参考和学习了以下文章: 1. mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据 2. 实战Nginx_取代 为了如何一步步的引出fastcgi和php-fpm,我先一点一点的说说关于php的周边.哎.突然觉得人活着好累! 先说说

C++应用程序性能优化(三)——C++语言特性性能分析

C++应用程序性能优化(三)--C++语言特性性能分析 一.C++语言特性性能分析简介 通常大多数开发人员认为,汇编语言和C语言比较适合编写对性能要求非常高的程序,C++语言主要适用于编写复杂度非常高但性能要求并不是很高的程序.因为大多数开发人员认为,C++语言设计时因为考虑到支持多种编程模式(如面向对象编程和范型编程)以及异常处理等,从而引入了太多新的语言特性.新的语言特性往往使得C++编译器在编译程序时插入了很多额外的代码,会导致最终生成的二进制代码体积膨胀,而且执行速度下降.但事实并非如此

为什么安卓没IOS快——iOS和安卓技术角度的深度对比

首先说明一下,这里面的解释并非我自己写的,而是我找到相关资料整理出来的,也算是为坛子做出点贡献,文末也分析了谷歌三个儿子和三星 i9100,希望这篇文章能在技术层面上提供一个科学的评判 android 和 ios. 如果能解决大家心中的困惑的话, 不妨给小弟加几分, 在此先谢谢大家了. Andorid 更新了一个版本又一个版本,硬件从单核到双核到四核,系统流畅度总算基本能和 iOS 持平了. 不过人们不禁会问,为什么都是基于 Linux, 两个系统会差别如此大?为什么 iPhone 4 用单核处

数极客vs百度统计深度对比

声明:本测评时间为2018年1月,若信息有误或更新请反馈至邮箱:[email protected].测评报告仅供参考,因采购该服务产生的任何争议与本文无关,文章版权归作者所有,未经授权不得转载. 编者按:企业在选择用户行为分析工具时,大都不知道如何选择适合自己的用户行为分析工具.笔者自己公司之前用的是百度统计,去年7月份同时接入了数极客的分析平台.在同时使用了这两款行为分析产品后,笔者从两款产品的定位.数据接入方式.定量分析功能.定性分析功能.二次开发与扩展.服务项目等六个主要方面深入对比百度统

FineBI和Tableau深度对比

国内占有率第一的FineBI和国外风生水起的Tableau,这两个”神仙打架”会是怎样的结果呢?本文来给FineBI和Tableau做个全方位的深度比较. 一.FineBI对比Tableau:数据建模.加工 数据建模能力方面,两款产品都支持对数据表进行自由的关联设置,但是Tableau建立的数据模型拓展性和灵活性相对低一些. 从数据建模所处的数据分析工作流程对比而言,Tableau更加适合有专业数据分析能力的数据分析师个人使用,FineBI则更加契合企业分工协作的工作流程. 二.FineBI对比

Redis各种数据结构性能数据对比和性能优化实践

很对不起大家,又是一篇乱序的文章,但是满满的干货,来源于实践,相信大家会有所收获.里面穿插一些感悟和生活故事,可以忽略不看.不过听大家普遍的反馈说这是其中最喜欢看的部分,好吧,就当学习之后轻松一下. Redis各种数据结构性能数据对比 测试工具:perf4j 性能指标:平均值,最小值,最大值,方差 对比将814条数据按单条插入到哈希MAP和哈希SET: 对比从814条数据的哈希MAP和哈希SET中判断一个元素是否存在(map的hasKey和set的isMember): 大量数据插入哈希MAP,运

【Java程序优化】- 深度剖析 List 性能分析

List 是重要的数据结构之一.最常用的的便是: ArrayList.Vector 和 LinkedList 三种了,他们类图如下图所示: 由上图可知,这三种 List 都实现了 Collection 和 List 接口. 这三种不同的实现中,ArrayList 和 Vector 使用了数组实现,封装了对内部数组的操作.它们俩唯一的区别是 ArrayList 没有任何一个方法是同步的,而 Vector 则是做了线程同步.我们之后均以 ArrayList 为例进行讲解. LinkList 使用了双

写好循环也不容易--8种遍历方法执行速度深度°对比

关于数组或对象遍历,相信很多人都没有深入观察过执行效率.这是一个曾在群里吵翻天的话题,读懂后你将成为遍历效率话题的大师. 导读 遍历数组或对象是一名程序员的基本素养之一. 然而遍历却不是一件简单的事, 优秀的程序员知道怎么去选择合适的遍历方法, 优化遍历效率. 本篇将带你走进JavaScript遍历的世界, 享受分析JS循环的快感. 本篇所有代码都可以直接运行, 希望您通读本篇后, 不止是浏览, 最好是亲手去实践下. 概述 js有如下两种数据需要经常遍历 数组(Array) 对象(Object)