GoReactive
GoReactive 是一个简单而强大的基于可观察模式的事件反应框架。它提供了方便完成观察、绑定等许多简单任务的简单方法。对于众多日常任务非常有用,可以避免在代码库中引入过多的复杂性。
GoReactive 故意不处理不同线程中的事件,这个框架的主要目的是提供易于调试且轻量级的强大功能。
开发这个框架的原因在于在某些地方,与大型反应框架的整合可能会很困难,对新员工来说更难跟上(学习曲线陡峭),同时也存在出现错误或误用的风险。这个框架旨在为大多数常用流程和观察提供简单解决方案,无需调试多线程环境,无需学习许多操作员以及更改您的应用程序架构。只在需要的地方使用,不打扰应用程序流程和当前架构。
如果您需要更复杂的功能,这个框架不会很大且拥有许多操作符,如果您只需要简单的绑定和可观察模式,这个框架是一个很好的选择。
简单使用
import GoReactive
...
class ViewModel {
let bindableProperty = Property<String?>(nil)
}
...
let viewModel = ViewModel()
// A group of cancelable subscriptions,
// will handle disposing of all subscriptions when deinitialized.
let cancelableGroup = CancelableGroup()
@IBOutlet weak var bindableLabel: UILabel!
@IBOutlet weak var bindableTextField: UITextField!
...
// Can subscribe to changes
self.viewModel.bindableProperty.subscribe(onNext: { (value) in
// handles subscription
}).add(to: self.cancelableGroup)
// Can bind one way
self.viewModel.bindableProperty
.bind(to: self.bindableLabel.reactiveComponent.text)
.add(to: self.cancelableGroup)
// Can bind two way
self.bindableTextField.reactiveComponent.text
.bidirectionalBind(to: self.viewModel.bindableProperty)
.add(to: self.cancelableGroup)
示例
要运行示例项目,请克隆仓库,并首先从 Example 目录运行 pod install
。
需求
- Xcode 10
- Swift 4.2
安装
GoReactive 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'GoReactive'
待办事项
- 结合观察者操作
- 映射观察者操作
- 使用可观察序列与 KVO、通知等
- CI 管道自动部署(版本和标签上的文档)及其他改进
- 代码覆盖率
- SwiftLint
- 支持 tvOS、macOS
作者
Gal Orlanczyk, [email protected]
许可协议
GoReactive 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。