如何决定哪个框架用于节点?

所以我们一直在使用node,现在我必须说,随着越来越多的节点社区,人们也开发了很多很棒的模块和框架。 但是,随着我们越来越多的项目的开展,有时我会困惑于哪个框架。 到目前为止,我们使用了以下框架:

  1. Express – 我最喜欢的节点框架之一,这也是我们在node.js开始制作应用程序时的第一个框架(我认为这也是第一个获得这么大的人气)。 我们确实有像callback地狱这样的问题,但是假设路由和代码组织更清洁,我们很高兴使用它。

  2. KoaJS – 另一个来自TJ和团队,这真是太棒了! 当任何浏览器难以支持的时候使用ECS 6。 (特别是当它帮助您完全删除callback地狱)。 我们在使用https遵守Koa时遇到了一些问题,必须使用hapi重新编写整个服务器,而且现在依赖于节点上的不稳定版本。

  3. Hapi – 这是我们最近的采用,并没有做太多的工作,但其中最有趣的部分是joi模块,它可以帮助我们validation请求(很容易),甚至在他们到达实际的服务器之前,也是自动生成文档。

  4. 合成器 – 我没有太多的交stream,但在阅读文档时,我碰到了

使用服务和dependency injection就像AngularJS,但在后端!

这真是太棒了,但是由于它还处于testing阶段,所以我不想马上使用它。

所以当试图去为你的应用程序的框架,是否有任何特定的function,一个框架擅长而其他人不? 因为说实话,我们采用了大部分的框架,除了语法上的差异(使用ECS 6的Koa除外)以及它们如何处理路线,我都没有发现它们之间的差异。

所以我的问题是,我们是否应该通过看看它的stream行度(这是人们通常的做法)来采用任何框架还是我们在做同样的事情时需要考虑一些检查点?

任何build议/帮助表示赞赏。

编辑

我想补充一点,我的这个问题的意图是在select任何node.js框架(而不是仅仅依赖于它的受欢迎程度或有多less大名字使用它)时,找出要考虑的关键点 。 对于前端,我们可以很容易地知道,因为我们已经知道或已经被告知将帮助开发更容易的关键特性(angular度和骨干之间的差异可以是一个例子)但是对于node.js框架,这是不是任何方式。

我会请其他人也考虑我的编辑。

我会尽量保持这个答案尽可能没有意见。 请编辑并帮助我改进。 这是一个重要的话题,应该得到一个很好的答案。

Express.js

优点

  • Express.js是一个很大的家伙,相当老,而且非常受欢迎。
  • 易于使用的意见
  • 非常轻量级

缺点

  • 没有花哨的特点

Koa.js

优点

  • 轻量级
  • Koa是Express的后继者
  • 没有callback地狱,感谢ES6发电机
  • 与Express同样的人build造

缺点

  • 相当新,不超级精致
  • 使用ECMAScript 6function,这意味着您需要Node.js v0.11(不稳定)

哈皮

优点

  • 许多官方模块,但不是一吨第三方的
  • 由一家大公司开发,用于他们自己的产品

缺点

  • 沃尔玛build造
  • 用于指定路线的语法不同于Koa或Express。
  • 本身和所有的官方模块都有奇怪的名字

合成器

第一个专门为单页面网页应用程序devise的后端框架。

优点

  • 为后端单页面网站devise,ala Angular.js
  • API首先
  • dependency injection,熟悉那些来自Java的人
  • 旨在做一吨后端的东西,让你在前端工作

缺点

  • dependency injection,很多人不喜欢,因为Java是它存在的唯一原因
  • 非常新,目前处于testing阶段
  • 不适合更传统的网站

更多资源

  • TechEmpower Framework基准testing ( 限于Node.js )许多Web框架的基准testing,目前Node.js只有原始的Node.js,Express和Hapi。