英文: Kit Kelly 译文:oschina vue
https://www.oschina.net/translate/web-frameworks-conclusions
是该读些评论和作一些总结的时候了。当咱们开始写这个系列博客的时候,咱们知道 JavaScript/web 应用框架并不太好总结。咱们努力对这个不可回答的问题做出回答:我该用什么样的框架?react
在这篇文章中,咱们将对这个系列中所提到的每款框架作一个总结,包括咱们所认为的强项和弱项。另外,咱们为你留下了一些值得思考的问题。web
我是否须要使用框架?typescript
若是不尝试回答这个问题就是咱们的失职,这愈来愈成为社会上某些人的口头禅,在网络平台上的争论也已经发展到犹如不须要额外编写 API 能更简单建立 Web 应用那样的地步。就像本系列中全部的内容同样,咱们的回答也大都是依据这些内容。redux
虽然无框架也能正常工做,可是,这也是有代价的。那些主张无框架手写 Javascript 的人,那些一般会被咱们认为是斯德哥尔摩综合症(情感上会依赖他人且容易受感动的人)的人,忘记了网络平台上有多套快速发展的 API ,至少有三种不一样的技术,三种大相径庭的语法。web 平台规范并肯定了超过 12000 个 API,事实上浏览器中的维恩图也显示了这些巨大差距。设计模式
若是你是一个有着深厚技术和经验的人,确实能够坦诚的不使用框架。但你团队的其余成员呢?你手下的那些人呢?或者当你的决定把你本身陷入困境的时候呢?这种状况下,咱们将会看到一个不用框架的团队在展开冒险,最后他们会发现本身建立了一个须要本身着手维护的框架。接着就会出现寻找人才的问题,他们不须要知道框架是如何工做的,只须要寻找会调用网络平台 API 的高级技能人才或者一些自称有经验的人才,最后却发现缺乏利于团队发展的技能深度和经验。浏览器
团队应该避免虚假等价(false equivalence)的陷阱,很显然,在 web 技术的应用方面具备创新性的公司在不断提升他们的市场价值和竞争力,Google、Facebook 和 Netflix 公司都是很好的例子。可是大多数公司不是这样,他们应该认可这一点。安全
有什么优点?网络
Angular 2+ 的最大优点在于它的流行程度。也有人认为它和 Google 密切相关的名字,会影响团队使用它。Angular 1 的迅速流行是由于那些来自其余交互式应用程序开发环境的人会发现对于开发单页面 web 应用程序具备类似的模型-视图模式。经过对 Angular 1 进行现代化演变和从新构建框架的某些部分,Angular 2+ 已经真正的爆发了,大量的正式的和非正式培训机构数量都让人印象深入,开发者有很强的市场竞争力。对于用户来讲它有一套用于构建用户界面的丰富组件,这也是本系列中少有的几个框架可以作到这点。架构
有什么弱点和挑战?
咱们以为 Angular 框架着重于在单个页面应用程序中建立用户界面并无处理构建完整的 web 应用这个更大的关注点,若是不及早肯定下来,这将会致使整个项目难以维护,在实际项目中,运行时提供不属于核心框架的技术每每让人以为难以想象,这大大下降了 TypeScript 对最终开发者的价值。
将来将何去何从?
Angular 5 刚刚发布,这看来是 Angular 已经成功的印证了快速发布版本的承诺,在 Google 的持续支持下,Angular 会愈来愈成熟。
像许多的大型组织同样,Google 具备多重(分裂)的人格,从外表上看,Angular 团队和那些专一于浏览器标准的团队之间显得很和谐。但咱们的观点是,和谐只是一层薄薄的窗户纸。Angular 团队对于 web 组件和渐进式 web 应用没有一个真正解决方案。咱们认为,业界广泛承认的标准将会在 Angular 框架中会逐步实现,这将会影响到如何更好的构建 Angular 应用将成为一个中/长期的风险。
什么时候选择 Angular 2+
若是你须要在一个大型的框架内获取技术资源,框架内的技术一般很容易移植;或者你须要在框架中训练开发人员,而且还要有必定的信心,他们会在短时间内得到必定的开发能力,这样的话你能够考虑 Angular 2+ 。须要注意的是 Angular1(angular.js)与 Angular2+ 是大相径庭的,其中的应用、技术和经验不能直接移植到 Angular2+ 的开发中去。
若是你的 web 应用可以很好的转化为标准的模型-视图模式,那么你也能够忽略其余直接考虑使用 Angular2+ 。
若是你对 Google Material UX 设计模式满意,那么 Material Angular 是遵循该模式的一种快速、简单且可靠的方式。
React 和 Redux 的最大优点在于它们相对简单和专一。作一件事情并把它作好是很是困难的,但这两个库都颇有效地完成了它们的目标。虽然对于某些状态容器方法多是外部的,但大多数开发人员仍是能够轻松掌握概念,并了解单向数据体系结构的好处,简化大量的用户界面应用程序。
React 和 Redux 最大的弱点不是它们是什么,而是它们不是什么。要构建一个功能丰富的 Web 应用程序,你须要许多功能,一旦脱离 React 和 Redux 和其余一些库的核心,你将发现一个很是分散的社区,拥有无数的解决方案和模式,不容易整合在一块儿。
所以,虽然 React 和 Redux 都是很是专一的库,但缺少经验的团队仍是会很容易地生成不可维护的解决方案,而不是意识到他们所作的选择会致使性能不佳或错误。 即便有经验的开发人员也可能意识到,一个松散的架构或惯例可能会在将来困扰他们。
假省钱是一种对本身的欺骗,组织范围内采用 React 和 Redux 将轻松下降无效率问题。 没有其余库和模式的普遍约定和标准化,标准化 React + Redux 比较于咱们正在采用的 JavaScript 来编写咱们的应用程序效率要高。
Facebook 和 React 最近从繁琐的附加专利纠纷中抽离,他们认识到,就像其余项目同样,更普遍的社区可以提升本身的声音。 我以为这有助于 Facebook 意识到他们还不能更好地了解咱们,相信咱们来引导项目。 但愿这将继续贯穿项目的特色和技术方向。
很难预测 React 和 Redux 的将来。 可是,将库集中在一块儿,确实会显着提升适应性,大多数React + Redux 模式都会促进一个分离的体系结构,从而能够轻松地进行重构和迭代。 两年前,你们喜欢的仍是React + Flux,但整个社区很快就拥抱了Redux。 思惟或模式的其余重大转变可能很容易被采纳。 这种关键能力可能会持续到将来。
若是你不多须要手把手指导,而且正在寻找更好的库而不是全面的框架,那么 React + Redux 多是正确的。 在这一过程当中,你不只须要对你的团队和组织的能力保持诚实,还要在你的初始开发过程当中,以及在整个应用程序的长期维护过程当中保持诚实。
有什么优点?
渐进式构建能力是 vue.js 最大的优点,vue 有一个简洁并且合理的架构,使得它易于理解和构建。
vue 有一个强大的充满激情人群的社区,这为 vue.js 增长了巨大的价值,使得为一个空白项目建立一个综合的解决方案变得十分容易。
在模型-视图应用程序和状态容器类型的应用程序之间的互相转换可能会使人感到困惑,即便没有完美包含一个模式到另外一个模式的完美转换,但让人感受但愿能维持两个模式的相关性。对于那些期待 vue.js 完美解决方案,并可能致使难以维护不一致的应用程序的人来讲,这至少是使人困惑的。
一个更大的挑战是 vue.js 依赖于一个单独的人,很明显,其余的项目基本是由一个组织提供支持,但这让人感受更加有意义,虽然它有一个强大文件的社区和许多有创新的新增项目,可是 vue 核心的开发基本落在一我的身上。
咱们很高兴看到 vue 更加容易接受新兴的标准方法,可是它的相似于 web 组件的模式,而不是真正的 web 组件,这多是 vue 所得不偿失的地方。
虽然 vue.js 有至关普遍的应用,但也很难预测在中期发展中这个势头能持续多久,它不是由一个商业组织直接支持并维护,所以,这很大程度上依赖于维护者的生存能力和继续维护下去的愿望来决定。
它也表现出了必定程度的语言适应能力,而且随着某些模式的落伍和失宠而继续保持自身语言的现代化和时代性,目前没有迹象代表 vue.js 架构未来没法适应进一步发展。
若是你有一个传统的 web 应用程序,并须要一个强壮稳健的应用程序层,那么 vue.js 多是一个很好的选择,它有清晰的模式,即便没有经验的团队也能正确或者错误的使用它。尽管 vue UX 框架没有开箱即用的功能,但在 vue.js 上也能大量持续性构建应用,这将有利于你的项目。
Dojo2 专一于带来更多构建在状态容器体系之上的动态组件的体验模式,填补了 react+redux 等框架的许多空白。
Dojo2 也知道它不仅仅只是在本身的生态圈发展,经过包含 web 组件导入和导出功能,也意识到须要支持不一样的应用实例,但它依旧提供了一个结构化和固有的框架价值,Dojo2 的核心基础仍然是专一于提供交互性。
Dojo2 以为它提供了大量重要的功能和解决方案,这对于构建完整的 web 应用是十分重要的,对于其余大多数框架而言这并非重点。提供一个国际化系统和普遍的易接入性的模式也是其中之一,同时也提供一个主题系统和演进模式,用以确保不只能为 Typescript/JavaScript 提供良好的代码开发,也能像 CSS 那样管理资源。
Dojo2 专一于提供一个结构化和符合人体工程学的开发环境,经过使用 typescript 和其余开发模式,它试图提供安全的防御机制去引导新手开发人员,经过专一于提升框架开发效率和开发安全性,旨在让开发团队可以快速交付更好的 web 应用程序。
有争论的是,经过进一步延长 Dojo2 的发布时间的作法是不是在阻碍框架的发展,反观其余项目因为其资源的扩大可以继续发展和快速迭代,致使 Dojo2 目前明确的处在一个拥挤的竞争环境之中。
这也许是一个潜在的发展机遇和挑战,同时但愿可以在灵活性和交互性上而不是别的特殊理由去使用 Dojo2 。
Dojo2 将是将来优秀 web 框架之一,它将继续努力为构建可扩展性的 web 应用程序提供清晰的模式和指导。随着新标准的不断出现,Dojo2 将进一步努力去在框架中实现新的标准方法,继续尝试扩大框架的开放性和交互性,创造适合更多人使用的解决方案。
若是你想采用一个灵活的、现代的、响应式的 web 应用程序架构,而且你须要不少智能化的默认设置,那么 Dojo2 将是一个不错的选择。不用去拼凑和构建一个管道,而且为你提供更高阶的命令模式让你能够更加专一的开发项目,更加确认它是直接为你能够直接生产开发所准备的。另外,若是你了解 typescript 的优点,Dojo2 会十分严谨的使用 typescript 来管理并提供一个稳健的开发者开发环境。
有什么优点?
Ember.js多是最执拗己见的主流框架,这也是其最大的优点。它有建立Ember.js应用程序的正确方法,一般只有一种方法来建立应用程序。Ember.js更相似于一个产品或平台,在那里你会到一个供应商的长期支持和维护。Ember.js提供了对其平台的全面版本管理,升级工具以及对API升级的强大指导和工具。成熟,是对Ember.js的一个很好的总结。
Ember.js多年来已经证实,它能够保持其框架并使其与现代标准保持一致,同时不会过早遗忘传统浏览器。
Ember.js有一个清晰合理的架构来全面构建Web应用程序。
有什么弱点和挑战?
Ember.js多是最执拗己见的主流框架,这也是它最大的弱点。虽然社区是开放的而且接受投资,可是仍然须要找到一个正确的方式来摆脱下滑的趋势,这多是具备挑战性的问题。
拥有一个丰富的第三方社区也可能具备挑战性。因为没有开箱即用的UX组件,这极可能会让你使用第三方套件。你可能会发现,虽然这些套件并不全面,你将须要创建或寻找其余组件。因为Ember.js没有扩展,因此对如何交互和管理DOM,你会发现你有不一致的部件,并且也没有提供一个易于管理的界面。
将来该何去何从?
Ember.js的主要贡献者是JavaScript语言标准委员会TC39的核心参与者。在过去的几年中,Ember.js对JavaScript的方向比任何其余框架都有更直接的影响。咱们的观点是,这将在将来继续受影响,并帮助促进JavaScript的特性和模式。这也意味着Ember.js将继续保持与将来标准的紧密结合的关系。
Ember.js不可能在未来随时消失,尽管他们的创新极可能是经过与Ember.js紧密结合的其余项目来实现的,好比Glimmer,它为Ember.js应用程序提供了一个新的UI框架,该框架基于TypeScript。
为何我会选择Ember.js?
若是你在框架中寻找成熟度,那么Ember.js很难出错。另外,因为Ember.js提供的内容被理解,而且有普遍的官方和官方承认的培训,以及严格的结构,找到可以创建基于Ember.js的应用程序的人才可能比其余框架更容易。也能够教大型团队如何构建应用程序,并确保整个团队的共同对话和理解。
若是你想要对社区保持信心,并批判性地思考他们平台的变化,那么Ember.js会是一个很好的考虑因素。您能够花更少的时间跟随当前的技术趋势,并更多地关注建立应用程序。
优点在哪?
Aurelia有不少关于构建Web应用程序的方法,结构和想法。 这个框架的编写有不少技术上的优势。
有什么弱点和挑战?
咱们估计最大的挑战就是核心发展的动力和临界物质的缺少。咱们感受不少的观点和概念都是咱们对其余框架的批评性的想法,可是这些愿望都没有彻底交付。它彷佛就像是一个正在进行的工做同样,就像Dojo 2,可是它已是一个已发布的框架。
大部分的Aurelia是坐落在一我的的肩膀上,若是这我的的的注意力或可用性改变,那么将会带来挑战。
将来会如何?
对于Aurelia来讲,有一个很大的机会。若是它可以实现他的愿景,他将要完整的保存这个构建Web应用程序的已有的模板,但会以更健全、更完整的方式交付。咱们不知道Aurelia是否可以充分的利用此次机会。
为何我会选择Aurelia?
若是您致力于Web模型视图应用程序模块,而且你和你的团队试图想把一些事作的更好,那么Aurelia会是一个选择。它就像是一个正在寻求一个更大的社区来帮助它的发展和进化的框架。
真心但愿这一系列的帖子至少给了你一点思考,你应该很容易有这样的想法那就是不可能有可验证的正确决定。同时,但愿你也意识到没有广泛的错误决定,你应该用一些问题和思考来武装本身,帮助你选择框架。
一个框架仅仅是一些模式的体现,一些科技的集成,源码帮助咱们更加容易去构建和维护网站应用,若是你是个体开发者,咱们能提供的最好的建议是花费尽量多的时间使用那些你认为能够为你所用的框架。若是你是公司的管理者或骨干领导要去作决定,请记住特色列表只是决定的一方面,有时候并非越多越好。挑战你本身活着你的团队使用一个总体的框架,可是首先,列出对你和你的组织重要的列表,尤为是那些技术以外特色。