Readme WIP

This commit is contained in:
mike-thompson-day8 2014-12-11 01:17:33 +11:00
parent ab1814e718
commit f572dfca5a
1 changed files with 11 additions and 8 deletions

View File

@ -28,8 +28,8 @@ and his divine instrument the `ratom`. We genuflect towards Sweden once a day.
Second, because paradigm is worth 80 points of IQ, we think you'll only Second, because paradigm is worth 80 points of IQ, we think you'll only
really "get" Reagent once you view it as an [FRP] library, and not simply a really "get" Reagent once you view it as an [FRP] library, and not simply a
ReactJS wrapper. To put that another way, we think that Reagent is closer in ReactJS wrapper. To put that another way, we think that Reagent is closer in
nature to [Hoplon] or [Elm] than it is [OM]. This wasn't obvious to us initially - nature to [Hoplon] or [Elm] than it is [OM]. This wasn't obvious to us initially - we
we knew we liked reagent, but it took a while for the penny to drop as to why. knew we liked reagent, but it took a while for the penny to drop as to why.
Finally, we believe in one way data flow. We don't like `cursors` which Finally, we believe in one way data flow. We don't like `cursors` which
allow for the two way flow of data. allow for the two way flow of data.
@ -72,16 +72,18 @@ It will contain structured data (perhaps with a formal [Prismatic Schema] defini
You will need to query that data. You will perform CRUD You will need to query that data. You will perform CRUD
and other transformations on it. and other transformations on it.
You'll often want to transact on this database atomically, etc. So "in-memory database" You'll often want to transact on this database atomically, etc. So "in-memory database"
seems a more useful paradigm than plain old atom. In our code, we actually call ratom `db`. seems a more useful paradigm than plain old atom. In our implementation, we actually
use the name `db` to drive home the point.
Finally, `db` doesn't actually have to be a ratom containing a map. re-frame Finally, `ratom` doesn't actually have to be a ratom containing a map. re-frame
imposes no requirement here. It could be a [datascript] database. Its just a datastore. imposes no requirement here. It could be a [datascript] database. Its just a datastore
of some description.
##### Magic Ratoms ##### Magic Ratoms
ratoms have a key feature: they act like normal clojurescript atoms, PLUS they allow ratoms have a key feature. They act like normal clojurescript atoms, **plus** they allow
you to create reactive functions similar to `lift` in [Elm] or `defc=` in [hoplon]. you to create reactive functions similar to `lift` in [Elm] or `defc=` in [hoplon].
You create these reactive functions via the macro `reaction` (or `run!`) You create these reactive functions via the reagent macros `reaction` or `run!`.
```clojure ```clojure
(ns example1 (ns example1
@ -118,7 +120,8 @@ Extending the diagram a bit, we introduce the beginnings of one way data flow:
``` ```
ratom --> components --> hiccup ratom --> components --> hiccup
``` ```
When using reagent, you write one or more `components`. The `[hiccup]` they produce is DOM represented as ClojureScript data structures. When using reagent, you write one or more `components`. The `[hiccup]` they
produce is DOM represented as ClojureScript data structures.
Think about `components` as `pure functions` - data in, hiccup out. Think about `components` as `pure functions` - data in, hiccup out.