From 34ea2a8d81ec71f8f6b1523de1868c93acb8f0a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Staltz?= Date: Thu, 7 May 2015 11:27:02 +0300 Subject: [PATCH] Minor update to README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6b02c5eb9..a4762a7ef 100644 --- a/README.md +++ b/README.md @@ -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