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

.cljc and server-side rendering

As discussed in many places throughout this book, Clojure and ClojureScript are very similar, but they are distinct languages. Clojure 1.7 released a feature called Reader Conditionals, which allows files to be loaded by both Clojure and ClojureScript.

There are a few interesting and powerful uses for reader conditionals as they apply to web applications. First, let's review what reader conditions actually are.

Reader conditionals are a new syntax which was added to Clojure 1.7 and ClojureScript. They create a new file extension, .cljc, which stands for Clojure Commmon, and new syntax to support loading .cljc files from Clojure, ClojureScript, and any future dialect.


Clojure files that end in the .cljc extension can be loaded by both Clojure and ClojureScript processes, with a few features and restrictions.

.cljc files shouldn't directly reference host interoperability forms because those aren't common across dialects. In Clojure, this means .cljc should...