EasyReact 2.3.1

EasyReact 2.3.1

ValiantCatWilliam Zang维护。



EasyReact 2.3.1

  • William Zang, 姜沂 和 秦洪

EasyReact

Build Status Version License Platform codecov

在其他语言中阅读此内容: 简体中文

什么是 EasyReact

EasyReact 是一个易于使用的响应式编程框架。

为什么使用 EasyReact

您是否对 RxSwift 和 ReactiveCocoa 中的 functors,applicatives 和 monads 感到困惑?没关系,这些概念非常复杂,以至于许多开发者在常规项目中实际上并没有使用它们。有没有一种简单易用的方式来使用响应式编程?EasyReact 就是为了应对这个需求而诞生的。

特性

注意:以下列出的 "Node" 指的是 EZRNode,EasyReact 中各种值(所有对象类型)的统一表示。

了解更多

  1. 框架概述

  2. 基本操作

  3. 内存管理

  4. 如何贡献

比较其他函数式响应式库(例如 ReactiveCocoaReactiveX

项目 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)

案例

  1. 单阶段操作,例如监听器、map、filter、flattenMap 等。
  2. 多播操作,例如 combine、zip、merge 等。
  3. 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%

benchmark

总结

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