Skip to content

Commit

Permalink
Minor update to README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
staltz committed May 7, 2015
1 parent 6ef7772 commit 34ea2a8
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Why would you use Cycle.js instead of other web frameworks such as Angular and R

- **The only (yet) 100% reactive frontend framework.** The truth is, if you really wanted to apply reactive programming everywhere in a single page app, you would have no other choice than Cycle. This is not yet another Flux library. I built it because it doesn't exist elsewhere. I want to structure apps as observable event streams as much as possible, while minimizing the use of `subscribe`, side effects, and `this`.
- **Sliceability.** Most frameworks claim to provide Separation of Concerns, but often they prescribe rigid containers where to place your code: Models, Views, Controllers, Components, Routes, Services, Dispatcher, Store, Actions, Templates, etc. Cycle has none of that. Instead, pure functions over immutable Observables and data structures (such as from [mori](https://swannodette.github.io/mori/) and [Immutable.js](https://facebook.github.io/immutable-js/)) allow you to *slice* your program wherever you wish. Plus, the reactive pattern makes it possible for no module to have functions such as `a.updateSomethingIn(b)` which inherently create coupling between `a` and `b`. You can write code with single responsibilities throughout. For instance, the View function in MVI just takes model data and renders virtual elements, it doesn't even have callbacks to handle events. Views aren't even aware of events (click, input, etc) that can happen on them. Additionally, Rendering is separated from View. Because it just outputs virtual DOM elements, it allows for testing without depending on the DOM. Other benefits include being able to swap the DOM renderer with a Canvas renderer or a Cocoa UI tree renderer or whatever other target you wish.
- **Great unit testability.** Everything is a JavaScript function or an Rx.Observable, so testing is mostly a matter of feeding input and inspecting the output.
- **Great testability.** Everything is a JavaScript function or an Rx.Observable, so testing is mostly a matter of feeding input and inspecting the output. You can also mock the `user()` function.
- **Welcomes immutable and stateless programming.** Cycle.js is built for, in combination with RxJS and immutable data structure libraries, a programming style that favors immutability and statelessness. This allows code to be clearer and less prone to bugs. Apps written in Cycle.js are `this`-less. See it for yourself, `this` cannot be found in [Cycle.js TodoMVC](https://github.com/staltz/todomvc-cycle/tree/master/js).

## Community
Expand Down

0 comments on commit 34ea2a8

Please sign in to comment.