ClojureScript
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
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
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.
Crea el directorio
src/clojuresript01
y en él el archivocore.cljs
con el siguiente contenido:(ns clojurescript01.core) (enable-console-print!) (println "¡Hola mundo!")
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"})
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
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>
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.