Book Image

Learning ClojureScript

By : W. David Jarvis, Allen Rohner
Book Image

Learning ClojureScript

By: W. David Jarvis, Allen Rohner

Overview of this book

Clojure is an expressive language that makes it possible to easily tackle complex software development challenges. Its bias toward interactive development has made it a powerful tool, enabling high developer productivity. In this book, you will first learn how to construct an interactive development experience for ClojureScript.. You will be guided through ClojureScript language concepts, looking at the basics first, then being introduced to advanced concepts such as functional programming or macro writing. After that, we elaborate on the subject of single page web applications, showcasing how to build a simple one, then covering different possible enhancements. We move on to study more advanced ClojureScript concepts, where you will be shown how to address some complex algorithmic cases. Finally, you'll learn about optional type-checking for your programs, how you can write portable code, test it, and put the advanced compilation mode of the Google Closure Compiler to good use.
Table of Contents (15 chapters)
Learning ClojureScript
About the Authors
About the Reviewer

Differences between Om and React

There are a few areas where Om does things differently than React. Let's dig into those in the following sections.


Om components are not strictly React components. Om creates a hidden object that implements React's interface, and that interface delegates to the reified object returned from an Om component constructor. For the most part, this is an implementation detail, and we don't need to worry about it.

State models

React is somewhat less opinionated about its state and where it is stored. Om is strongly opinionated that you should have one consistent source of state—the application state atom. Every component on the page reads and writes to that atom, which provides a consistent view of our application with cursors to provide isolation and reusability, as necessary.


Cursors are a new feature unique to Om; they don't exist in React.