EasyReact

The library is deprecated. Please move to https://github.com/Meituan-Dianping/EasyReact

Showing:

Popularity

Downloads/wk

0

GitHub Stars

43

Maintenance

Last Commit

3yrs ago

Contributors

13

Package

Dependencies

1

License

Apache License 2.0

Categories

Readme

EasyReact

Build Status Version License Platform codecov

Read this in other languages: 简体中文

What is EasyReact

EasyReact is an easy-to-use reactive programming framework.

Why use EasyReact

Are you confused by the functors, applicatives, and monads in RxSwift and ReactiveCocoa? It doesn't matter, the concepts are so complicated that not many developers actually use them in normal projects. Is there an easy-to-use way to use reactive programming? EasyReact is born for this reason.

Features

Note: The "Node" listed below refer to EZRNode, a unified representation of various values (all object types) in EasyReact.

Learn more

  1. Framework Overview

  2. Basic Operations

  3. Memory Management

  4. How to Contribute

Compare other Functional Reactive libraries (e.g. ReactiveCocoa or ReactiveX)

ProjectEasyReactReactiveCocoaReactiveX
Core ideaGraph theory and object-oriented programmingFunctional programmingFunctional programming and generic programming
Propagation variability
Basic transformation
Combination transformation
High-order transformation
Traversal node/signal
Multi-language supportObjective-C
(Other language versions will open source in the future)
Objective-C, SwiftMany language versions
Performancefasterslowfastest
Chinese document support
Debugging toolsTopology display
More rich dynamic debugging tools(Coming soon)
Instrument

System Requirements

  • iOS 8.0 +
  • Xcode 8.0 +

How to run the example project

git clone this repo,excute pod install in Example/, then open EasyReact.xcworkspace.

Installation

CocoaPods

Add the following content in Podfile

pod 'EasyReact'

Then execute pod install

How to use (For a more detailed example, please see the test specs in the example project Tests/)

Unit Test

EasyReact contains a complete unit test with the relevant code in the Example/Tests folder. You can open the sample project and execute the Test command to run these unit tests.

Time-consuming Benchmarking with EasyReact and ReactiveCocoa Common APIs

Environment

Build Platform: macOS Mojave 10.14

IDE: Xcode 10.0(10A255)

Device: iPhone XS Max 256G iOS 12.0(16A366)

Cases

  1. Single stage operations, such as listener, map, filter, flattenMap, etc.
  2. Multicast operations, such as combine, zip, merge, etc.
  3. syncWith operations

The scale of the test is based on 10 operating objects and 1000 triggers. For example, the listener method has 10 listeners and repeats the action of sending the value 1000 times. The unit of time is ns.

Result data

Repeat the above experiment 10 times to get the data as follows:

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

benchmark

Summary

ReactiveCocoa's average time consuming is 434.8% times more than EasyReact.

EasyReact will compare benchmark with RxSwift when the Swift version open source recently.

Authors

William Zang, chengwei.zang.1985@gmail.com
姜沂, nero_jy@qq.com
Qin Hong, qinhong@face2d.com
SketchK, zhangsiqi1988@gmail.com
zesming, ming9010@gmail.com
Zhiyu Wong, www312422@vip.qq.com
johnnywjy, johnny.wjy07@gmail.com
qiezishu, qiezishu@yahoo.com

License

EasyReact is Apache Public License 2.0

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100