riwsky / modern-cljs

A short series of tutorials on ClojureScript

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

modern-cljs

A series of tutorials to guide you in creating and setting up ClojureScript (CLJS) projects.

Introduction

This series of tutorials will guide you in creating, setting up and running simple CLJS projects. The series follows a progressive enhancement of projects themselves.

Assuming you already have installed leiningen 2, to run the last available tutorial without coding:

  1. $ git clone https://github.com/magomimmo/modern-cljs.git
  2. $ cd modern-cljs
  3. $ lein ring server-headless
  4. open a new terminal and cd in modern-cljs
  5. $ lein cljsbuild once
  6. $ lein trampoline cljsbuild repl-listen
  7. visit login-dbg.html and/or shopping-dbg.html
  8. play with the repl connected to the browser

LATEST NEWS: Starting from the 11th tutorial, we decided to directly include the 1.0.2-SNAPSHOT of domina source code in the modern-cljs code. Consequently, we removed [domina "1.0.2-SNAPSHOT"] from the project dependencies. We also upgraded lein-cljsbuild to 0.2.10 version, even if we know that there is an open issue about a very boring and apparently useless waiting time after cljsbuild has completed any CLJS compilation.

PREVIOUS NEWS: modern-cljs has been tested with lein version 2.0.0-preview10. On January 10th 2013 lein reached version 2.0.0-RC1. Due to lein-ring 0.7.5 depending from leinjacker version 0.2.0, lein 2.0.0-RC1 does not work. If you still want to use RC1 version of lein, you need to update modern-cljs dependencies with lein-ring 0.8.0-SNAPSHOT which includes leinjacker 0.4.1 as updated dependency. If, instead, you prefer to stay with version 2.0.0-preview10 of lein, you need to downgrade lein by running the following command at terminal prompt: $ lein upgrade "2.0.0-preview10"

NOTE 1: If you want to access the code of any single tutorial because you don't want to copy&paste it or you don't want to write it yourself, do as follows:

  • $ git clone https://github.com/magomimmo/modern-cljs.git
  • $ cd modern-cljs
  • $ git checkout tutorial-01 # for tutorial 1, tutorial-02 for tutorial 2 etc.

That said, I suggest coding yourself the content of the tutorials. In my experience is always the best choice if you are not already fluent in the programming language you have under your fingers.

In the first tutorial you are going to create and configure a very basic CLJS project.

In this tutorial you are going to set up a browser connected CLJS REPL (bRepl) using an external http-server.

In this tutorial you are going to substitute the external http-server with ring, a CLJ based http-server.

In this tutorial we start having some fun with CLJS form validation, by porting from JS to CLJS the login form example of Modern Javascript: Development and design by Larry Ullman.

In this tutorial we're going to use domina library to make our login form validation more clojure-ish.

In this tutorial we're going to investigate and solve in two different ways the not so nice issue we met in the last tutorial.

In this tutorial we're going to explore CLJS/CLS compilation modes by using the usual lein-cljsbuild plugin of leiningen, but we'll discover a trouble we do not know how to manage yet.

In this Tutorial we're going to introduce domina events which, by wrapping Google Closure Library event management, allows to follow a more clojure-ish approach in handing DOM events.

In this tutorial we'are going to face the need to programmatically manipulate DOM elements as a result of the occurrence of some DOM events.

In this tutorial we're going to extend our comprehension of CLJS by introducing Ajax to let the CLJS client-side code to communicate with the CLJ server-side code.

In this tutorial we're going to enrich our understanding of Domina events by applying them to the login form example we introduced in the 4th Tutorial.

In this tutorial we're going to cover the highest and the deepest layers of the Login Form example we started to cover in the previous tutorial.

One of our long term objectives is to eliminate any code duplication from our web applications. That's like to say we want firmly stay as compliant as possible with the Don't Repeat Yourself (DRY) principle. In this tutorial we're going to respect the DRY principle by sharing validators between the client (i.e. CLJS) and the server (i.e. CLJ).

Next Tutorial

TO BE DONE

License

Copyright © Mimmo Cosenza, 2012-2013. Released under the Eclipse Public License, the same as Clojure.

About

A short series of tutorials on ClojureScript


Languages

Language:Clojure 100.0%