简介

优质
小牛编辑
129浏览
2023-12-01

EasyReact

EasyReact 是什么

EasyReact 是一个简单易用的响应式编程库。

为什么要使用 EasyReact

你是否对 RxSwift 和 ReactiveCocoa 中的 functor、applicative、monad 感到困惑不解?没关系,那些概念太复杂了,以至于并没有多少人真的在实际项目中使用它们。有没有简单易用的响应式编程方式呢?EasyReact 就是为此而生的,来试试吧。

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

项目EasyReactReactiveCocoaReactiveX
核心概念图论和面向对象编程函数式编程函数式编程和泛型编程
传播可变性
基本变换
组合变换
高阶变换
遍历节点 / 信号
多语言支持Objective-C (其他语言开源计划中)Objective-C、Swift大量语言
性能较快
中文文档支持
调试工具拓扑图展示
更多丰富的动态调试工具(开源计划中)
Instrument

系统需求

  • iOS 8.0 +
  • Xcode 8.0 +

如何运行示例项目

clone 本项目,在 Example 文件夹下执行pod install,然后打开EasyReact.xcworkspace.

安装

CocoaPods

Podfile中添加

pod 'EasyReact'

然后运行pod install即可

如何使用 (如需更详细的例子,请查看示例工程 Tests 文件夹下的测试用例)

单元测试

EasyReact 包含了完善的单元测试,相关代码在 Example/Tests 文件夹下。你可以打开示例工程并执行 Test 命令来运行这些单元测试。

EasyReact 和 ReactiveCocoa 常见API 基于耗时的 Benchmarking

测试环境

编译平台: macOS Mojave 10.14

IDE: Xcode 10.0(10A255)

真机设备: iPhone XS Max 256G iOS 12.0(16A366)

测试对象

  1. listener, map, filter, flattenMap等单阶操作
  2. combine, zip, merge等多点聚合操作
  3. syncWith操作

其中测试的规模基于操作对象个数10,触发次数1000。如Listener方法 有10个监听者,重复触发发送值的行为1000次。 时间单位为ns。

测试数据

重复上面的实验10次,得到数据平均值如下:

namelistenermapfilterflattenMapcombinezipmergesyncWith
EasyReact421868926615802987238198967525744164484050852963920611846827
ReactiveCocoa226398142883385287682892881033112788203182689281680921030935277
RAC:EasyReact53.7%161.1%291.4%291.1%2226.3%170.8%23.0%261.1%

benchmark

结果总结

基于Objective-C语言实现的EasyReact和ReactiveCocoa:

ReactiveCocoa 平均耗时是 EasyReact 的 434.8%

EasyReact 的 swift 版本即将开源,届时会和 RxSwift 进行 benchmark 的比较。

相关文章

最后更新:

类似资料

  • EasyReact 是一个简单易用的响应式编程库。本文档描述了 EasyReact 框架的不同组件的高层描述,并试图解释它们如何协同工作。

  • EasyReact 是一款基于响应式编程范式的客户端开发框架,开发者可以使用此框架轻松地解决客户端的异步问题。EasyReact 已在美团和大众点评客户端的部分业务中进行了实践,并且持续迭代了一年多的时间。 EasyReact 目前开源的是 iOS Objective-C 语言部分,系统需求: iOS 8.0 + Xcode 8.0 + 特性 注:以下列出的“节点”均指 EZRNode ,即 Ea

相关阅读

开发工具

EasyReact