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

时间:2011-02-24 06:18:34

标签: knockout.js reactive-programming rxjs

有谁知道RxJsKnockout之间的差异?从表面上看,他们似乎试图解决同样的问题,构建一个事件驱动的UI。但是有过两种经验的人,他们有什么不同/他们有什么相似之处?你能描述一些关于它们的东西来帮助我选择吗?

2 个答案:

答案 0 :(得分:62)

史蒂夫(Knockout的创造者)explained the difference在他的博客上写道:

  

我对最近使用它的Rx for JavaScript非常熟悉   在一个大项目,以及事实上的设计方面   淘汰赛是考虑到我的Rx体验。

     

关键区别   在Knockout执行观察者模式和Rx之间的是   Knockout会自动推断出关联和依赖关系   在不需要的情况下,从常规程序代码的可观察量之间   通过特殊功能API预先指定它们。我想了   敲除使用常规的程序/命令式代码,因为它更多   大多数开发人员熟悉且平易近人。

     

另一个不同之处是   Rx针对没有状态的事件流进行了优化。在   首先,我对此及其功能纯度充满热情,但是   过了一段时间,感觉越来越像是在跳过   尴尬的箍,不得不发明额外的方法来模拟状态来管理   UI命令有效。这就是为什么,在Knockout中,所有可观察者都可以   被视为有状态 - 例如,您可以随时阅读他们的最新信息   值(缓存,顺便说一下 - 它不会重新计算,直到   基础数据变化)。

     

Rx比Knockout更进一步   组合事件流的方法,而Knockout比Rx更进一步   进入UI开发,让你将它的observable绑定到HTML DOM   元素和模板,并以您想要的任何方式操纵它们。 Rx是   非常棒,但事实证明并不是我想要的   构建丰富的UI - 因此设计了Knockout。

答案 1 :(得分:20)

它们实际上是完全不同的框架,但我可以看到为什么你会看到交叉:

RxJs 提供了一种针对异步流(如事件和Web请求)组合操作的方法,并包括组合流等高级方案(当A和B都出现时,启动它,但如果A,则取消它或B再次出现)

Knockout 是一个MVVM框架,允许您通过映射其功能的模型来管理用户界面的状态。这样可以将视图的逻辑与视图分开。