Cycle’s core abstraction is your application as a pure function main() where inputs are read effects (sources) from the external world and outputs (sinks) are write effects to affect the external world. These I/O effects in the external world are managed by drivers, plugins that handle DOM effects, HTTP effects, etc. The internals of main() are built using Reactive Programming primitives, which maximizes separation of concerns and provides a fully declarative way of organizing your code. The dataflow is plainly visible in the code, making it readable and traceable. Cycle.js apps are made of pure functions, which means you know they only take inputs and generate predictable outputs, without performing any I/O effects. The building blocks are reactive streams from libraries like xstream, RxJS or Most.js, which greatly simplify code related to events, asynchrony, and errors.
Features
- Cycle.js is a framework with very few concepts to learn
- Apps in Cycle.js are small and readable
- In every Cycle.js app, each of the stream declarations is a node in a dataflow graph
- In Cycle.js, the flow of data is clear by reading your code
- Cycle.js has components and every single Cycle.js app is a function that can be reused in a larger Cycle.js app
- The dataflow is plainly visible in the code, making it readable and traceable