有谁知道RxJs和Knockout之间的差异?从表面上看,他们似乎试图解决同样的问题,构建一个事件驱动的UI。但是有过两种经验的人,他们有什么不同/他们有什么相似之处?你能描述一些关于它们的东西来帮助我选择吗?
答案 0 :(得分:62)
我对最近使用它的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框架,允许您通过映射其功能的模型来管理用户界面的状态。这样可以将视图的逻辑与视图分开。