ClojureScript

images/clojurescript-logo.png

ClojureScript is a compiler for Clojure that targets JavaScript. It is designed to emit JavaScript code which is compatible with the advanced compilation mode of the Google Closure optimizing compiler - ClojureScript

Conocimientos previos

  • Clojure
  • HTML5
  • CSS3
  • ECMAScript 5
    • DOM
    • XMLHttpRequest

Herramientas

  • JDK 8 u OpenJDK 8

Opcionalmente

Instalación

  1. Verifica la instalación del JDK de Java:

     alumno@servidor:~ $ which java
     /usr/bin/java
     alumno@servidor:~ $ which javaC
     /usr/bin/javac
     alumno@servidor:~ $ java -version
     openjdk version "1.8.0_77"
     OpenJDK Runtime Environment (build 1.8.0_77-b03)
     OpenJDK 64-Bit Server VM (build 25.77-b03, mixed mode)
     alumno@servidor:~ $ javac -version
     javac 1.8.0_77
    
  2. Crea un proyecto (directorio) y en él descarga la última versión disponible de ClojureScript (archivo cljs.jar) disponible en https://github.com/clojure/clojurescript/releases:

     alumno@servidor:~ $ mkdir -p www/clojurescript01
     alumno@servidor:~ $ cd -p www/clojurescript01
     alumno@servidor:~/www/clojurescript01 $ wget -c https://github.com/clojure/clojurescript/releases/download/r1.8.40/cljs.jar
    

    Notas:

    • La versión usada en este documento es 1.8.40.
    • ClojureScript ya incluye a Clojure.
  3. Crea el directorio src/clojuresript01 y en él el archivo core.cljs con el siguiente contenido:

     (ns clojurescript01.core)
     (enable-console-print!)
     (println "¡Hola mundo!")
    
  4. Crea el archivo build.clj con el siguiente contenido:

     (require 'cljs.build.api)
     (cljs.build.api/build "src"
       {:main 'hello-world.core
        :output-to "out/main.js"})
    
  5. Compila al namespace clojurescript01/core:

     alumno@servidor:~/www/clojurescript01 $ java -cp cljs.jar:src clojure.main build.clj
    

    Si todo ha salido bien contarás con la siguiente estructura de archivos:

     alumno@servidor:~/www/clojurescript01 $ pwd && tree
     /home/alumno/www/clojurescript01
     ├── build.clj
     ├── cljs.jar
     ├── out
     │   ├── cljs
     │   │   ├── core.cljs
     │   │   ├── core.js
     │   │   └── core.js.map
     │   ├── clojurescript01
     │   │   ├── core.cljs
     │   │   ├── core.cljs.cache.edn
     │   │   ├── core.js
     │   │   └── core.js.map
     │   ├── goog
     │   │   ├── array
     │   │   │   └── array.js
     │   │   ├── asserts
     │   │   │   └── asserts.js
     │   │   ├── base.js
     │   │   ├── debug
     │   │   │   └── error.js
     │   │   ├── deps.js
     │   │   ├── dom
     │   │   │   └── nodetype.js
     │   │   ├── object
     │   │   │   └── object.js
     │   │   └── string
     │   │       ├── stringbuffer.js
     │   │       └── string.js
     │   └── main.js
     └── src
         └── clojuresript01
             └── core.cljs
    
     12 directories, 20 files
    
  6. Crea el archivo index.html con el siguiente contenido:

     <!DOCTYPE html>
     <html>
       <head>
         <meta charset="UTF-8">
         <title>clojurescript01</title>
       </head>
       <body>
           <script type="text/javascript" src="out/main.js"></script>
       </body>
     </html>
    
  7. Inicia al servidor web thttpd y accede a él con Firefox teniendo la Consola de Firebug abierta:

     alumno@servidor:~/www/clojurescript01 $ thttpd -D -p 8080 -nor -l -
    

    Nota: observarás la impresión de ¡Hola mundo! en la Consola.

PENDIENTE

Enlaces