Comment créer une application ClojureScript

Cet article est inspiré par l'outil Create Elm App pour le langage Elm, lui-même inspiré par l'outil Create React App pour React.js et JavaScript.

L’objectif de ces outils est de fournir une configuration de construction sans configuration afin de faciliter la tâche des développeurs et des débutants. Dans cet article, j'aimerais donner un bref aperçu de ce que ClojureScript peut offrir à ceux qui débutent avec le langage.

Leiningen

Leiningen est le moyen le plus simple d'utiliser Clojure. Axé sur l’automatisation de projet et la configuration déclarative, il vous permet de vous concentrer sur votre code.

C'est tout! Tout ce dont vous avez besoin est un outil unique. Leiningen gère vos dépendances, exécute un serveur de développement et construit des versions de production. C’est en fait l’outil le plus essentiel pour les projets Clojure (Script). Il permet d’utiliser des préprocesseurs CSS, de coder votre code, de lancer des tests e2e ou de les déployer en production et d’effectuer beaucoup plus de tâches avec des plugins. Vous pouvez penser à Leiningen comme un coureur de tâches comme Grunt.

Leiningen élimine la configuration standard en utilisant des modèles. Un modèle est un package écrit par une personne aléatoire sur Internet, afin d'aider les autres développeurs à démarrer avec différents types de projets.

Commencer

  1. Installez Leiningen (voir les autres options d'installation):
brasser installer lein

2. Démarrez le projet ClojureScript avec le modèle Figwheel:

lein nouveau nom de projet figwheel
sortie en ligne de commande après l'exécution de `lein new figwheel my-app`

Cela générera un projet de la structure suivante:

├── LISEZMOI.md
├── dev
└── user.clj
├── project.clj
├── ressources
└── public
├── css
│ └── style.css
└── └── index.html
└── src
    └── mon_app
        └── core.cljs

Si vous souhaitez commencer à créer une application Web, vous pouvez initialiser un projet avec l’une des trois bibliothèques d’encapsuleurs React.js: Om, Rum ou Reagent.

lein new figwheel nom-projet - --rum

Construction de production

lein cljsbuild une fois min

lein-cljsbuild est un plugin pour construire des projets ClojureScript.

Ceci exécutera une tâche définie dans la configuration comme min une seule fois et produira une construction optimisée et réduite. Le code est optimisé par Closure Compiler, l'outil d'optimisation JavaScript le plus avancé.

sortie en ligne de commande après l'exécution de `lein cljsbuild une fois min`

Serveur de développement

lein figwheel

lein-figwheel est un plugin pour le code JavaScript et CSS de sortie rechargeable à chaud.

Voyons ce qui se passe ici:

  1. Validation de la configuration. Si quelque chose ne va pas avec une configuration, Figwheel vous demandera de résoudre ce problème en indiquant l'erreur exacte dans le fichier de configuration.
  2. Serveur de démarrage. Le serveur de développement commence à l'emplacement indiqué: 3449, le port peut être spécifié dans la configuration.
  3. Compiler et regarder. Compile ClojureScript et surveille les modifications apportées aux fichiers source du projet. Figwheel compilera les modifications et enverra du code JavaScript dans le navigateur. S'il y a une erreur dans votre code, Figwheel ne la mettra pas à jour, mais affichera une boîte d'alerte dans le navigateur avec le message d'erreur et l'emplacement exact de cette erreur dans le code.
  4. Lancer l'observateur CSS. Observateur simple pour les fichiers CSS qui vont transférer les modifications dans le navigateur.
  5. ClojureScript REPL. Enfin, Figwheel démarrera REPL interactif où vous pourrez exécuter le code qui sera exécuté dans le navigateur et interagir avec le code du projet.

J'ai enregistré cette vidéo rapide pour montrer le fonctionnement de REPL et Figwheel.

Les dépendances

Les packages Clojure (Script) sont stockés dans un référentiel similaire à NPM, appelé Clojars. Vous pouvez y trouver un paquet et l’ajouter à: dependencies dans votre projet.clj. Leiningen installera automatiquement les nouvelles dépendances au redémarrage du projet.

: dépendances [[org.clojure / core.async "0.2.391"]]

Conclusion

J'espère que cet article vous rendra moins effrayé par ClojureScript et vous aidera à commencer à l'utiliser en quelques secondes. Vous trouverez ci-dessous une liste de ressources à lire pour en savoir plus sur la langue et les outils.

  • ClojureScript Wiki
  • Leiningen
  • Roue de figue
  • ClojureScript Koans
  • Les cinq prochaines années de ClojureScript
  • ClojureScript pour les sceptiques
  • Développer ClojureScript avec Figwheel