Join GitHub today
Welcome to the om-next-cross-platform-template wiki!
It makes following things easy:
- Optimistic updated is MUST HAVE feature on mobile. Careful state handling in Om-Next makes it possible
- Fast communication with backend - Om-Next queries allows you to request all the data in one call
- Multiple entrance to the app: search results, app start, app recover after it was purged from the memory, etc. We should be able to change app UI state quickly to any form
How does hot reload works?
First we build REPL app, which is a simple RN application. Then we run a Figwheel which is a standard hot reload tool in ClojureScript world. REPL app then tries to connect to the Figwheel HTTP endpoint, fetch the file and eval it. After that figwheel starts to maintain WebSocket connection and reload the file if it has changed in file system
How does state sync works?
First we subscribe to any state changes using standard
add-watch function. Whenever state has changed - we call special HTTP handler, which append a line to a file with a state. This line would look something like
reset! app-state [new-state]. As figwheel monitoring file system changes - it will distribute those changes across the clients. In reality it's a bit more complicated
How can I connect my Emacs/Vim/Cursive to nrepl?
Just start the repl session
line repl, during run it will notify you about nrepl port
How can I test it on a device?
First check the docs from RN, iOS and Android. Then make sure that you've changed and put a right IP address to project.clj in
:figwheel :websocket-host section and to the
src/repl/repl.cljs to the
:base-url. Make sure that you've recompiled repl app:
lein clean && lein cljsbuild once repl
How it's different from natal, re-natal, boot-react-native?
This project (and related ktoa) on the other hand tries to keep those things on a top:
- No abstraction from React Native - it's essential to know it and use it in a right way
- Cross-platform development - it should be possible to reuse components or part of the logic inside the browser and on mobile. With Om-Next and idea of queries it's almost trivial and very desired to reuse such code between platforms
- Easy integration with existing apps - it should be possible and as easy as possible to migrate the existing app to CLJS
Where I can ask a question?
A lot of discussions happening on #cljsrn channel in the http://clojurians.net