Knockout.js和Rx.js有什么区别?

Knockout.js和Rx.js有什么区别?

问题描述:

有没有人知道RxJsKnockout之间的区别?对我来说,他们似乎试图解决同样的问题,建立一个事件驱动的用户界面。但是有两位经验丰富的人,他们有什么不同/他们有什么相似之处?你能描述一些关于他们的东西来帮助我选择吗?Knockout.js和Rx.js有什么区别?

史蒂夫(淘汰赛的创建者)explained the difference在他的博客:

我非常熟悉的Rx为JavaScript,最近用它 倚重一个大项目,并在设计方面的事实 淘汰赛是根据我的Rx经验制定的。

淘汰赛的实施观察者模式和Rx的之间的主要区别 是 敲除自动推断从正规的程序代码观测值之间的关联和依赖 您无需 指定它们前面虽然特殊功能的API。我希望 Knockout使用常规的程序/命令式代码,因为它对大多数开发人员来说更熟悉和平易近人。

另一个区别是 Rx针对组成没有状态的事件流进行了优化。在 首先,我对这个和它的功能纯度很热心,但经过一段时间后,感觉越来越像我跳过 尴尬的箍,并且不得不发明更多的方法来模拟状态以有效地管理UI命令 。这就是为什么在Knockout中,所有的观测值都可以被看作是有状态的 - 例如,你总是可以读取它们最新的 值(顺便说一句,它不会重新计算,直到 底层数据发生变化)。

的Rx远远超出了进入淘汰赛组成的事件流的先进 方式,而淘汰赛比的Rx 到UI的发展更进一步,让您绑定的观测到HTML DOM元素 和模板,并操纵他们,你想要的任何方式。 Rx是 它的功能很强大,但事实并非如此我想 构建丰富的用户界面 - 因此设计了Knockout。

它们实际上是相当不同的框架,虽然我明白你为什么会看到交叉:

RxJs提供合成操作对异步流,像事件和Web请求的手段,包括高级场景比如将流(当A和B都出现,开始这一点,但取消它,如果A或B再次发生)

淘汰赛是一个MVVM框架,使您可以通过模型管理用户界面的状态映射它的功能。这允许您的视图逻辑与您的视图分离。

+15

我只是想指出,你现在可以在Rx-和Ko-Observables之间搭桥。看到这里: https://github.com/cburgdorf/Knockout-Rx/blob/master/app/App.ViewModels.SearchViewModel.js – Christoph 2011-05-25 06:55:37