38 lines
1.7 KiB
Markdown
38 lines
1.7 KiB
Markdown
# Reactimal
|
|
|
|
Reactimal provides a set of primitives that can be used to express your code as a logic graph using
|
|
reactive programming methods. Reactive programming inverts the dependency relationship between
|
|
functions and their parameters. No longer do callers need to know the signature of the functions
|
|
they call. Instead computed values subscribe to scalar properties or other computed values. The
|
|
reactive method improves code readability and reduces the tendency toward spaghetti code.
|
|
|
|
Reactimal provides the following reactive programming primitives. Each type of primitive is
|
|
[subscribable](./docs/subscribable.md) and provides a single output value, but differ in how they
|
|
receive their input.
|
|
|
|
## Input Primitives
|
|
|
|
- A [property](./docs/property.md) directly receives a scalar value. It serves as an entry point to
|
|
a logic graph for scalar values.
|
|
- A [container](./docs/container.md) wraps javascript container objects and triggers an update when
|
|
a property changes or a method is called. (NOTE: Nestable container changes are tracked only one
|
|
level deep.)
|
|
|
|
## Computational Primitives
|
|
|
|
- A [computed](./docs/computed.md) only receives values from other subscribables but serves to
|
|
compute new values. This is the function in the logic graph.
|
|
- A [stream](./docs/stream.md) is the asynchronous version of a computed.
|
|
|
|
Reactimal also includes a few [utilities](./docs/utilities.md) that may be useful when building
|
|
logic graphs.
|
|
|
|
## Inspiration
|
|
|
|
Reactimal is the result of years of learning from the following projects:
|
|
|
|
- [KnockoutJS](http://knockoutjs.com/)
|
|
- [Overture](https://github.com/fastmail/overture)
|
|
- [Redux](https://redux.js.org/)
|
|
- [Mithril](https://mithril.js.org/)
|