在其他语言中阅读此内容: 简体中文
什么是 EasyReact
EasyReact 是一个易于使用的响应式编程框架。
为什么使用 EasyReact
您是否对 RxSwift 和 ReactiveCocoa 中的 functors,applicatives 和 monads 感到困惑?没关系,这些概念非常复杂,以至于许多开发者在常规项目中实际上并没有使用它们。有没有一种简单易用的方式来使用响应式编程?EasyReact 就是为了应对这个需求而诞生的。
特性
注意:以下列出的 "Node" 指的是 EZRNode
,EasyReact 中各种值(所有对象类型)的统一表示。
了解更多
ReactiveCocoa 或 ReactiveX)
比较其他函数式响应式库(例如项目 | EasyReact | ReactiveCocoa | ReactiveX |
---|---|---|---|
核心思想 | 图论和面向对象编程 | 函数式编程 | 函数式编程与泛型编程 |
传播可变性 | |||
基本转换 | |||
组合转换 | |||
高阶转换 | |||
遍历节点/信号 | |||
多语言支持 | Objective-C (未来的其他语言版本将开源) |
Objective-C, Swift | 许多语言版本 |
性能 | 更快 | 慢 | 最快 |
中文文档支持 | |||
调试工具 | 拓扑显示 更多丰富的动态调试工具(即将推出) |
仪表 |
系统要求
- iOS 8.0+
- Xcode 8.0+
如何运行示例项目
git clone
这个仓库,在 Example/ 中执行 pod install
,然后打开 EasyReact.xcworkspace
。
安装
CocoaPods
在 Podfile
文件中添加以下内容:
pod 'EasyReact'
然后执行 pod install
如何使用 (更详细的示例,请参阅示例项目 Tests/ 中的测试规范)
单元测试
EasyReact 在 Example/Tests 文件夹中包含了一个完整的单元测试,您可以通过在示例项目中执行 Test 命令来运行这些测试。
使用 EasyReact 和 ReactiveCocoa 公共 API 的耗时基准测试
环境
构建平台:macOS Mojave 10.14
IDE:Xcode 10.0(10A255)
设备:iPhone XS Max 256G iOS 12.0(16A366)
案例
- 单阶段操作,例如监听器、map、filter、flattenMap 等。
- 多播操作,例如 combine、zip、merge 等。
- syncWith 操作
测试的规模基于10个操作对象和1000个触发器。例如,监听器方法有10个监听器,重复执行发送值1000次。时间单位是纳秒(ns)。
结果数据
重复上述实验10次,得到以下数据
名称 | 监听器 | map | filter | flattenMap | combine | zip | merge | syncWith |
---|---|---|---|---|---|---|---|---|
EasyReact | 4218689 | 26615802 | 9872381 | 9896752 | 5744164 | 48405085 | 29639206 | 11846827 |
ReactiveCocoa | 2263981 | 42883385 | 28768289 | 28810331 | 127882031 | 82689281 | 6809210 | 30935277 |
RAC:EasyReact | 53.7% | 161.1% | 291.4% | 291.1% | 2226.3% | 170.8% | 23.0% | 261.1% |
总结
ReactiveCocoa的平均耗时是EasyReact的434.8%倍。
EasyReact将在Swift版本开源后,与RxSwift进行基准比较。
作者
张威廉, [email protected]
姜沂, [email protected]
秦洪, [email protected]
SketchK, [email protected]
曾小明, [email protected]
王智宇, [email protected]
吴俊英, [email protected]
戚子书, [email protected]
许可证
EasyReact使用Apache公共许可证2.0