https://github.com/omcljs/om
ClojureScript interface to Facebook's React
https://github.com/omcljs/om
Last synced: about 1 month ago
JSON representation
ClojureScript interface to Facebook's React
- Host: GitHub
- URL: https://github.com/omcljs/om
- Owner: omcljs
- Created: 2013-12-11T18:18:11.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2020-08-17T12:30:25.000Z (over 4 years ago)
- Last Synced: 2024-10-30T01:59:43.405Z (6 months ago)
- Language: Clojure
- Size: 2.08 MB
- Stars: 6,652
- Watchers: 264
- Forks: 364
- Open Issues: 80
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
Awesome Lists containing this project
- awesome-react-cn - om - ClojureScript interface (Uncategorized / Uncategorized)
- awesome-clojurescript - Om
- awesome-starred - omcljs/om - ClojureScript interface to Facebook's React (others)
README
# Om
> *NOTE*: This project is no longer under active development. If you'd like to use
> a library that's well maintained that was inspired by some of the ideas
> presented here see [Fulcro](https://github.com/fulcrologic/fulcro)A [ClojureScript](http://github.com/clojure/clojurescript) UI framework and
client/server architecture over [Facebook's
React](http://facebook.github.io/react/).Om UIs are out of the box snapshotable and undoable and these operations have
no implementation complexity and little overhead.Om borrows ideas liberally from [Facebook's
Relay](https://facebook.github.io/relay/) and [Netflix's
Falcor](http://netflix.github.io/falcor/) with a dash of inspiration from
[Datomic pull syntax](http://docs.datomic.com/pull.html) to avoid the typical
incidental complexity that arises from client/server state management.## Dependency Information
Latest release: 1.0.0-beta1
[Leiningen](http://github.com/technomancy/leiningen/) and [Boot](http://boot-clj.com)
dependency information:```
[org.omcljs/om "1.0.0-beta1"]
```[Maven](http://maven.apache.org) dependency information:
```
org.omcljs
om
1.0.0-beta1```
## Example
```clojure
(ns example
(:require [goog.dom :as gdom]
[om.dom :as dom]
[om.next :as om :refer [defui]]))(defui Hello
Object
(render [this]
(dom/h1 nil "Hello, world!")))(def hello (om/factory Hello))
(.render js/ReactDOM (hello) (gdom/getElement "example"))
```## Tutorials
There is an Quick Start tutorial that will introduce you to the core
concepts of Om
[here](https://github.com/omcljs/om/wiki/Quick-Start-%28om.next%29). There are
also a variety of other guides [here](https://github.com/omcljs/om/wiki#om-next).## Documentation
There is documentation [here](https://github.com/omcljs/om/wiki/Documentation-%28om.next%29)
## Contributing
Please contact me via email to request an electronic Contributor
Agreement. Once your electronic CA has been signed and returned to me
I will accept pull requests.## Community
If you are looking for help please get in touch either on the
[clojurians.slack.com **#om** channel](http://clojurians.net) or the
[om-cljs Google Group](https://groups.google.com/d/forum/om-cljs).## References
* [Worlds: Controlling the Scope of Side Effects](http://www.vpri.org/pdf/tr2011001_final_worlds.pdf)
* [A Functional I/O System](http://www.ccs.neu.edu/racket/pubs/icfp09-fffk.pdf)
* [Directness and Liveness in the Morphic User Interface Construction Environment](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.103.600&rep=rep1&type=pdf)
* [Learnable Programming](http://worrydream.com/LearnableProgramming/)
* [Relay](https://facebook.github.io/relay/)
* [Falcor](http://netflix.github.io/falcor/)
* [GraphQL](http://graphql.org)
* [Datomic pull syntax](http://docs.datomic.com/pull.html)## Copyright and license
Copyright © 2013-2017 David Nolen
Licensed under the EPL (see the file epl.html).