CoffeeScript est un langage de programmation qui se compile en JavaScript, conçu pour améliorer la lisibilité et la concision du code JavaScript grâce à une syntaxe plus claire et à une réduction du code standard. Il promeut un style de programmation plus sophistiqué, fortement inspiré par Python et Ruby, visant ainsi à rendre le processus de développement plus fluide, en particulier pour les applications web. CoffeeScript a également été conçu pour aider les développeurs à écrire du code plus rapidement et clairement, tout en se compilant en JavaScript standard, ce qui permet son exécution sur n'importe quel navigateur ou environnement prenant en charge JavaScript.
CoffeeScript a été créé par Jeremy Ashkenas et a été publié pour la première fois en 2009. Le langage est né du besoin de simplifier JavaScript, qui, malgré son omniprésence dans le développement web, était devenu encombrant et souvent verbeux en raison de ses exigences syntaxiques. Les développeurs cherchaient des moyens d'écrire un code plus propre et plus maintenable, et Ashkenas a saisi l'occasion pour mettre en œuvre une nouvelle syntaxe qui se sentirait plus naturelle et expressive.
CoffeeScript s'inspire fortement de Python et Ruby, deux langages connus pour leur syntaxe élégante et concise. Le langage a rapidement gagné en popularité, surtout lorsque la communauté du développement web a commencé à adopter des frameworks comme Node.js et Backbone.js, qui bénéficiaient d'une syntaxe plus épurée. L'essor de frameworks front-end tels qu'AngularJS et React a également fourni une autre plateforme pour l'utilisation de CoffeeScript.
À l'heure actuelle, la popularité de CoffeeScript a diminué par rapport à ses premières années, principalement en raison de l'avènement d'ES6 (ECMAScript 2015), qui a introduit de nombreuses fonctionnalités que CoffeeScript cherchait à fournir, telles que les fonctions fléchées, les classes et les littéraux de gabarit. La communauté autour de CoffeeScript est toujours active, et il reste utilisé dans certains projets hérités, mais de nombreux développeurs choisissent désormais de s'en tenir à JavaScript moderne.
L'une des caractéristiques les plus frappantes de CoffeeScript est son utilisation de l'indentation pour désigner les portées, éliminant ainsi le besoin d'accolades.
carré = (x) ->
x * x
Les définitions de fonctions en CoffeeScript sont succinctes et peuvent être déclarées à l'aide de ->
(ou =>
pour les fonctions liées).
ajouter = (a, b) -> a + b
CoffeeScript prend en charge les compréhensions de liste, ce qui permet une création de tableaux concise et expressive.
carrés = (x * x pour x dans [1..5]) # [1, 4, 9, 16, 25]
L'interpolation de chaînes est simple, facilitant la construction de chaînes avec des variables.
nom = "Monde"
salutation = "Bonjour, #{nom}!" # "Bonjour, Monde!"
Définir des classes et les étendre est fluide en CoffeeScript, offrant une syntaxe plus claire que JavaScript.
classe Animal
constructeur: (@nom) ->
classe Chien étend Animal
aboyer: -> console.log "#{@nom} aboie."
CoffeeScript utilise l'opérateur splat (...
) pour passer un tableau comme arguments séparés.
multiplier = (args...) ->
résultat = 1
pour arg dans args
résultat *= arg
résultat
Vous pouvez également définir des paramètres par défaut lors de la définition de fonctions.
saluer = (nom = "inconnu") -> "Bonjour, #{nom}!"
La déstructuration permet des affectations plus concises à partir de tableaux et d'objets.
[a, b] = [1, 2]
{foo, bar} = {foo: "Bonjour", bar: "Monde"}
unless
CoffeeScript introduit l'instruction unless
comme une alternative plus lisible à if not
.
unless ilPleut
console.log "Allons dehors !"
CoffeeScript a la flèche grasse (=>
) qui préserve le contexte de this
, similaire aux fonctions fléchées de JavaScript.
bouton.addEventListener 'click', =>
console.log "Bouton cliqué !"
CoffeeScript inclut un compilateur qui prend des fichiers .coffee
en entrée et produit du JavaScript standard. Ce compilateur peut être exécuté directement en ligne de commande ou intégré dans des systèmes de construction comme Grunt et Gulp.
La plupart des IDE et éditeurs de texte populaires tels que Visual Studio Code, Atom et Sublime Text offrent des plugins pour le support de CoffeeScript, y compris la coloration syntaxique et la compilation intégrée.
Pour compiler un projet CoffeeScript, vous pouvez simplement utiliser la commande :
coffee -c projet.coffee
Vous pouvez également surveiller les fichiers pour les changements de cette manière :
coffee -w -c projet.coffee
CoffeeScript a principalement été utilisé dans le développement web, en particulier pour le scripting côté client dans les SPA (Applications à Page Unique). Des frameworks comme Backbone.js et Rails ont utilisé CoffeeScript, et de nombreuses applications de production existent encore qui ont été construites avec ce langage.
CoffeeScript sert de sucre syntaxique au-dessus de JavaScript, permettant un style de codage plus concis et lisible. JavaScript ne prend pas en charge des fonctionnalités comme les compréhensions de liste et les opérateurs splat nativement, ce qui rend CoffeeScript attrayant pour certains cas d'utilisation.
Bien que CoffeeScript s'intègre bien dans l'écosystème JavaScript, Python offre des bibliothèques et des frameworks plus étendus pour l'analyse de données, le calcul scientifique et le développement web. CoffeeScript est particulièrement mieux adapté au développement front-end.
CoffeeScript et Ruby partagent des expressions idiomatiques, mais le but de CoffeeScript est étroitement axé sur l'interopérabilité avec JavaScript. Ruby est un langage à usage plus général avec un écosystème riche mais manque de capacités de compilation directe pour les navigateurs web.
TypeScript offre une vérification de type statique qui peut aider à détecter les erreurs au moment de la compilation. CoffeeScript, en revanche, se concentre uniquement sur la simplification de la syntaxe JavaScript sans enforcement de type.
L'un des outils de traduction source-à-source les plus utiles pour CoffeeScript inclut CoffeeScript-ES6, qui peut convertir CoffeeScript en JavaScript ES6. De plus, en ce qui concerne les outils de traduction de code, Babel peut également gérer les transformations JavaScript, permettant aux développeurs de travailler avec des fonctionnalités JavaScript modernes tout en prenant en charge les versions plus anciennes.
Lors de la traduction de CoffeeScript, il est essentiel de considérer comment gérer correctement l'indentation, car elle est syntaxiquement significative, et comment transformer les fonctionnalités de CoffeeScript en leurs équivalents dans d'autres langages de manière efficace.