ReactiveUI (RxUI) vs Reactive Extensions
本文关键字:Reactive Extensions vs RxUI ReactiveUI | 更新日期: 2023-09-27 18:30:01
来自 http://docs.reactiveui.net/en/index.html :
ReactiveUI是一个MVVM框架,允许您使用Reactive。 适用于 .NET 的扩展,用于创建优雅、可测试的用户界面,这些用户界面 在任何移动或桌面平台上运行。
RxUI 与反应式扩展有什么不同吗?
为什么我更喜欢 RxUI 而不是 MVVMCross/light+Rx?有什么特别的?RxUI能做一些Rx做不到的事情吗?是不是更简洁?是不是更舒适?
我在 github 页面上看到了示例 https://github.com/reactiveui/ReactiveUI#a-compelling-example。但是我不能只用 Rx 做同样的事情吗?
附言某处有 API 文档吗?
你在这里包含了很多问题,所以我会一一回答。
RxUI 与反应式扩展有什么不同吗?
是的。反应式扩展是"一个库,用于通过使用可观察序列和 LINQ 样式的查询运算符来组合异步和基于事件的程序。 它与 UI 无关。Rx 为您提供了对数据流的一般抽象。
RxUI 是一个 MVVM 框架,这意味着它是一个类库,可帮助您在应用中实现 MVVM 模式。
RxUI能做一些Rx做不到的事情吗?是不是更简洁?是不是更舒适?
它有不同的目的。Rx 提供了一组方法,这些方法通常可以帮助您移动应用中的数据。RxUI 用于创建用户界面。它在引擎盖下使用 Rx,并且还从其组件中公开 Rx 类型的 API(即 IObservable<T>
(。
例如,ReactiveUI 中的 ICommand 实现(称为 ReactiveCommand(公开了一个名为 ThrownException
的属性,该属性的类型为 IObservable<Exception>
(您可以将其视为"一系列错误"(。
请注意,虽然 IObservable<T>
接口类型是 .Net 基类库的一部分,但实际上使用此类型操作的所有有用函数都包含在反应式扩展库中。
但是我不能只用 Rx 做同样的事情吗?
不,因为 - 例如 - Rx 不为您提供ICommand
实现,这是每个 MVVM 框架的重要组成部分。
为什么我更喜欢 RxUI 而不是 MVVMCross/light+Rx?有什么特别的?
如果你想在你的应用中大量使用反应式扩展,你可能更喜欢使用 RxUI(而不是其他 MVVM 框架(,因为它们彼此集成得非常好。结合起来,它们为您提供了许多开箱即用的功能(例如,查看ReactiveCommand或WhenAny。
话虽如此,正如RxUI的创建者所说:
您可以将 ReactiveUI 与其他 MVVM 框架一起使用,您无需提交其中一个。RxUI 中的许多方法(如 WhenAny(适用于任何对象,并在运行时确定如何最好地连接到它们。
RxUI绝对是自助餐桌(随心所欲!(,而不是七道菜的餐点:)
最后:
附言某处有 API 文档吗?
是的,有!看看这里: https://reactiveui.net/api/
作为旁注,请随意浏览文档的响应式编程部分,该部分将向您解释框架背后的一些基本术语和概念:)