当前位置:  开发笔记 > 编程语言 > 正文

Angular 2 VS Aurelia?2017年

如何解决《Angular2VSAurelia?2017年》经验,为你挑选了1个好方法。

我一直在评估许多SPA框架.我坚持以下两个,无法决定我应该使用哪一个项目:

    Angular 2

    奥里利亚

这两个框架都承诺进行大量的操作.我非常为角度2感到兴奋,因为它得到了Google的支持,并且已被许多大公司采用.所以我做了一些比较我自己(手指交叉)的借口给Angular粉丝;).我也是粉丝,但.....

这是我做的:

Angular 2

    从https://github.com/angular/quickstart/archive/master.zip下载QuickStart

    按照快速启动和运行应用程序的指示,到目前为止一切顺利

    现在来看看chrome Developer工具中的Network选项卡.哇,我看到至少36个http请求和这个简单应用程序的总大小约为1.4MB缩小.

    谷歌搜索了一下,发现我们可以通过遵循AOT,treeshaking,gzip等很多其他方法来减小大小并最小化直到50k和http请求到10.很公平.

    最后比较编码风格:为了只显示Hello Angular,我们需要创建main.ts,app.module.ts,app.component.ts.每个文件必须包含@Component()装饰器,因此几乎需要在每个模块上导入角度核心.然后将该组件导入module.ts,然后引导main.ts.

奥里利亚

    从http://aurelia.io/downloads/basic-aurelia-project.zip下载

    按照快速启动的说明进行操作.

    添加了两个带有hello world的app.ts和main.ts文件.

    到目前为止运行它运行的应用程序非常好.

    检查开发人员工具中的网络选项卡,它显示0.9MB并发出9个http请求.

    按照相同的步骤使用gzip和捆绑最小化大小后,它会产生大约170kb的5个http请求.

最后比较了两种框架的编码风格.显然,Aurelia有一个易于理解的清晰代码.

我在Aurelia看到的唯一的缺点是它是一个相当新的,几乎不为许多JS开发人员所知,并且到目前为止社区也很差.

我将它们视为Microsoft Windows(Angular 2)和Apple(Aurelia).另一方面,Apple更稳定并且具有特定范围的用户Microsoft Windows几乎每个地方都有.

我该怎么办?请帮忙.

谢谢



1> Marc Scheib..:

也许,下面的AMA对你有用,虽然它现在有点老了:AMA与Aurelia Team

最重要的问答是以下(仅引用):

您是否认为Angular 2.0偏离了标准?Aurelia的目标是符合标准并且独立吗?

在这种情况下,这不是信仰问题,而是事实.如果您查看HTML规范并查看Angular 2,您会发现它们并不和谐.

一年多以前,Angular 2团队介绍了他们的符号绑定语法.虽然这是技术上符合标准的HTML,但社区指出它不符合SVG(我还没有确认自己).虽然社区成员指出了这一点,但Angular 2团队没有改变他们的设计.从Beta 2开始,他们实际上采用了额外的属性/元素语法,这种语法涉及区分大小写的约束.HTML不区分大小写,因此符合规范.因此,实际上不可能让Angular 2与浏览器的解析器,DOMParser API甚至innerHTML本地工作,因为这些机制根据浏览器以不同的方式"规范化"套管,因此套管不能被"信任" ".这意味着,如果Angular 2依赖于套管(即ngFor和ngModel attrs),那么浏览器将无法原生地处理它.为了解决这个问题,我的理解是Angular 2团队必须实现他们自己的专有标记解析器.一句话:我不确定他们称他们的视图语言是什么,但它不是HTML.

对于Aurelia来说,标准合规性非常非常重要.我们努力与当前和新兴标准保持一致,不做任何与他们发生冲突或违反标准的事情.我们必须添加尚未涵盖的其他功能(例如数据绑定),但我们已经以符合现有和新兴Web标准的方式完成了这些功能.我们计划无限期地以这种方式继续,因为我们希望Aurelia开发人员成为优秀的Web开发人员.


我来自棱角分明,我为什么要使用aurelia而不是角2?我的优点是我已经知道棱角分明,并且有庞大的社区.谢谢.

首先,我认为在这里纠正这个假设很重要.假设Angular 2只是Angular 1中的增量或进化变化.但事实并非如此.Angular 1和Angular 2之间唯一相同的是字母A,N,GU,L,A和R.它们是两个完全不同的框架,用不同的编程语言编写,具有不同的架构,不同的概念,不同的开发方法论,不同的能力,不同的社区......不同的一切.

我在这里的肥皂盒上......但我认为将这个框架称为Angular有点欺骗.这是一个全新的,不同的图书馆,与旧的没有联系.应该给一个新名字.但是,由于你提到的原因,他们给出了相同的名称.他们希望您不要考虑采用Angular 2,因为您认为它只是一种增量或渐进的变化,而不是完全不同的变化.

从Angular 1移植到Angular 2是一项巨大的工作,即使使用"迁移"工具也是如此,这些工具根本不是迁移工具.它们是整合策略.迁移实际上需要做很多工作.您必须完全重写并重新思考如何编写应用程序.一些Angular 1应用程序在Angular 2中无法实现,因为Angular 2已经锁定或删除了与UI的动态组合和观察绑定表达式相关的某些功能.

有趣的是,将Angular 1应用程序移植到Aurelia实际上更容易.我们社区中有很多人已经做到了这一点并且对这种体验非常满意.以下是Aurelia对Angular 2的一系列优势:

Aurelia是一个小得多的图书馆.Angular 2缩小750k,不包括路由器,动画或http客户端.这不是任何人都应该想到的永远生产的东西.Aurela缩小了350k,其中包括路由器,动画和http客户端.如果您的目标是现代浏览器并且不需要我们提供的所有polyfill,您甚至可以将该大小减少多达100k.

在独立的dbmonster重新绘制渲染基准测试中,Aurelia比Angular 2更快或更快.通过我们即将推出的ui-virtualization插件,它几乎是Angular 2的2倍.

Aurelia符合标准; Angular 2不是.有关详细信息,请参阅其他AMA答案.

Aurelia更好地支持分离的表示模式,例如MVVM.MVC和MVP.在Aurelia,视图和视图模型之间有一个清晰的分离; 所有责任都在适当的位置.在Angular 2中,您必须使用视图的内部实现细节配置视图模型,从而破坏封装并使重用视图模型或视图变得困难或不可能.它还大大增加了维护成本,并使开发人员团队更难以并行处理组件.

Aurelia非常不引人注目.在大多数情况下,您可以编写简单的ES 2016或TypeScript代码.您在JavaScript代码中看不到框架或根本没有看到框架.它不会挡住.这对于代码的寿命和维护以及可学习性和可读性非常重要.相反,Angular 2必须在任何地方导入,并且在整个代码中都需要元数据.它的配置非常重,与Angular 1一样多,只有配置看起来不同.

Aurelia与Angular 2之外的其他库更具互操作性,因为我们不使用摘要或不必要地抽象DOM.框架越接近标准,其保留的越多,它就越具有互操作性.

最后,Aurelia得到Durandal Inc.的支持.该公司的唯一目的是建立Aurelia及其生态系统并为其提供支持.另一方面,Angular 2是Google内部六个竞争UI框架之一.每个人都希望自己看起来像"谷歌祝福堆栈",但没有一个.实际上,Google官方并未支持或支持任何这些库.它们是构建它们的各个团队的开源侧项目.在Angular 2的情况下,它由绿茶团队建立,其真正的工作是构建一个内部CRM类型的应用程序.

还有很多其他原因......但这很少见.


这些"评论"大概是4-6个月大.Angular 2在几个月内开发了很多.当那时候给出这些答案时,角度处于测试阶段,但现在他们已经发布了2.2.4(手指交叉)生产就绪,正如角度团队所说.我同意他们仍违反HTML标准,但他们的应用程序正在运作.... Aurelia也是如此....
Angular 2或4就像前端框架世界的WCF一样 - 是的,我看到了它的愿景,为什么它是组件化的,但在现实世界的某个时刻,当你有最后期限或只是希望你的原型在合理的时间框架内发生时(虽然你的大脑仍然对这个想法感到兴奋)然后你开始三思而后行......很多,很多,很多脚手架,仪式只是为了起步(确保CLI很棒,但事实是我必须使用CLI应该发出警报响铃!).相比之下,Aurelia充分利用了两个世界,AngularJS和组件宝石
你是完全正确的,除此之外:那些评论是1岁:).这是我认为的一个重点(这个主题完全基于意见).当然,Angular已经发展,但Aurelia在那一年也有.如果每个人都很好,那么差距只会转移到其他主题上.无论如何,我认为使用其中一个框架你不能做任何错误,但Aurelia是我最喜欢的.
推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有