Highland.js、Kefir.js 和 Rx.js 之间的区别是什么?

What are the differentiating features between Highland.js, Kefir.js, and Rx.js?

由于在 SO 上要避免主观答案,我特别想问:这三个 functional/reactive 库之间的功能 and/or 性能差异是什么,这会让我选择其中之一其他?我已经淘汰了 BaconJS,因为它依赖于 jQuery。我是 JS 流的新手,主要感兴趣的是首先在 NodeJS 中熟悉它们,然后在 AngularJS 上下文中熟悉它们。如果您选择了其中之一而不是其他,那么选择的标准是什么?

Reactive-Extensions 存储库中有页面比较这些(自然地,每个其他页面都与 RxJS)。

Bacon.js (and kefir.js as well)

Highland.js

下面的一切都是非常主观的:)

RxJS

优点:

  • 文档和大型社区。
  • 与 Rx* 系列共享接口。这是一个很大的优势,因为您可以采用来自 RxJava 社区的示例。
  • 库中有很多基元和一些如何使用它们的示例
  • 背压
  • 它是其他图书馆的一种标准具

缺点:

  • 有时看起来过于复杂
  • 实施时考虑 "Java"

Bacon.js

优点

  • 带有一些高级示例的非常好的文档(贪吃蛇游戏,例如实现)
  • 很多原语
  • 考虑到 JS 实现
  • 我发现它真的很容易上手

缺点 - 它没有实现背压,这使得它在后端变得愚蠢

Highland.js

优点:

  • 它旨在与 node.js(或 browserify)环境一起工作,这非常好
  • 没有外星人的概念(从JavaScript/Node的角度来看)
  • 背压
  • 实现在 Node 流之上,这真是个好主意
  • 占地面积小

缺点:

  • 愚蠢的文档,没有示例。实际上每次我尝试从 Rx 或 Bacon
  • 中采纳样本
  • 缺少一些原语。实际上你可以自己实现其中的大部分已经实现了但是很痛苦(见上一点)

总结:因为没有样本你会全部学会:)恕我直言,最有前途的是Highland.js。但是 RxJs 更成熟

提示:如果您需要在 Whosebug 上提问,请使用 RxJS 方言并将其翻译成年轻人