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

Understanding Single Page Appliactions

An SPA is a way of building a web application. In a traditional application, the server returns an HTML response containing the page content. Visiting another page on the application requires an HTTP request to the server, which returns the HTML for the second page and any associated resources, such as the same JavaScript and CSS as the previous page. In an SPA, the page content is generated via JavaScript calling DOM functions directly (for example, document.createElement), and links on the page simulate a new page load but don't result in an HTTP request to the server. Many well-known websites, such as Gmail, Facebook, and Twitter are single page applications.

The tradeoffs of SPAs

SPAs have advantages and disadvantages over conventional web applications; we will look at both here.


  • Provides richer UI

  • Easier to deal with client-side state and data

  • Easier to deal with AJAX

  • Faster client interactions once the page is loaded


  • More development...