Tightrope
- Guide
- Overview
- Installation and Setup
- Schema
- mainly unique and ref-type attributes
- derivation of datascript schema from datomic schema
- The UI model
- concept of mounting entities
:idents
and :lookup
:query
and :data
:mount-tx
and :unmount-tx
:auto-retract?
and :init-tx
- table of q/freshen/mutate
touches app state | optional target | mutates external | network | async
!
for local (sync) !!
for remote (async) !!!
for remote !!
with optimistic local !
- Client State (datascript)
- central atom of all application state
- reactively updates the UI on transact
- mutating app state with
upsert!
- also
(transact! [(upsertion ...)])
- External State (pathom)
- connects application state to outside world
- datascript and datomic results available to parser automatically (no resolvers required)
- writing resolvers
- local (cljs)
- server (clj)
- shared (cljc)
- 2 special inputs: datascript and datomic (don’t require resolvers)
- loading (freshening) from external state with
freshen!/!!/!!!
- mutating external state with
mutate!/!!/!!!
- I/O of the entire application (at all stack levels)
- inputs include the browser window, local storage, cookies, remote APIs
- Going Remote
:remote
configuration - tightrope server handler
- request and response middleware
:request
in parser env
- transit vs edn encoding
- bring your own middleware