BT

Nouveau Early adopter ou innovator ? InfoQ a travaillé sur de nouvelles fonctionnalités pour vous. En savoir plus

Version 1.7 de CoffeeScript

| par Burke Holland , traduit par Simon Courtois le 13 févr. 2014. Durée de lecture estimée: 3 minutes |

Jeremy Ashkenas a publié la version 1.7 de CoffeeScript qui apporte au transpiler JavaScript quelques changements très attendus.

La version 1.7 inclut l'une des fonctionnalités les plus demandées, le support du chaînage d'appels sans parenthèses. Dans les versions précédentes, lorsque le développeur voulait chaîner des appels de fonctions, les parenthèses étaient obligatoires alors qu'elles ne le sont normalement pas en CoffeeScript.

// avant 1.7 - parenthèses obligatoires pour chaîner
$('#element').addClass('active').css({ left: 5 });

// depuis 1.7 - plus de parenthèses
$ '#element'
.addClass 'active'
.css { left: 5 }

Cette version apporte également le support des chaînes de caractères multilignes. Dans les anciennes versions, les herestrings (ou chaînes de caractères littérales), censées préserver les espacements et sauts de lignes, ignoraient l'opérateur \ qui indique que deux chaînes composent une même ligne. Avec la 1.7, ce défaut est corrigé permettant aux développeurs d'utiliser proprement les chaînes multilignes en CoffeScript.

console.log '''The quick brown fox jumped over the \
lazy dog'''

// résultat avant 1.7
The quick brown fox jumped \nover the lazy dog

// résultat depuis 1.7
The quick brown fox jumped over the lazy dog

L'expansion est maintenant possible lors de la déstructuration d'un tableau, question qui était restée la plus longtemps ouverte sur le dépôt de CoffeScript.

# récupérer le dernier élément du tableau animals
animals = [ 'cat', 'dog', 'hippopotamus' ]

# avant 1.7
hippo = animals[animal.length - 1]

# depuis 1.7
[..., hippo] = animals

# ...les deux sont transpilées en...
hippo = animals[animals.length - 1];

De nouveaux opérateurs mathématiques sont également présents. On trouve le nouvel opérateur de puissance, la floor division et l'opérateur modulo (qui retourne le reste d'une division).

# puissance
2 ** 2
# est transpilé en...
Math.pow(2, 2);

# floor division
2 // 3
# est transpilé en...
Math.floor(2 / 3)

# modulo
2 %% 3
# est transpilé en...
var __modulo = function(a, b) { return (a % b + +b) % b; };
__modulo(2, 3);

Autre amélioration : CoffeeScript s'aligne sur Node.js lors d'un appel à require. Plutôt que de charger automatiquement tous les fichiers d'un dossier, seul le fichier index.coffee sera chargé, de la même façon que Node.

La majeure partie du travail apporté à la version 1.7 (ainsi qu'aux versions précédentes de CoffeeScript) est fournie par les membres de la communauté. "Plus de 100 développeurs ont contribué à CoffeeScript" indique Jeremy. "L'importante adoption de CoffeeScript est due à l'attrait de l'idée pour les développeurs JavaScript". Jeremy a chaleureusement remercié Michael Srb pour son importante contribution à la version 1.7.

CoffeeScript bénéficie effectivement d'une forte popularité, au point de devenir le 10ème projet le plus populaire sur Github. Il est également supporté par certains frameworks comme Ruby on Rails (depuis la version 3.1) ou encore par Microsoft Visual Studio grâce au plugin Web Essentials. Brenden Eich, le créateur de JavaScript, s'est exprimé sur la façon dont CoffeeScript a influencé sa réflexion sur le futur de JavaScript.

L'utilisateur GitHub stefanpenner note que "…l'import/export ES6 serait génial…" pour CoffeeScript.

En ce qui concerne les fonctionnalités ES6 dans CoffeeScript, Jeremy indique :

CoffeeScript est globalement terminé — il est plutôt stable depuis deux ans — mais continuera d'évoluer légèrement dans le futur. Par exemple : le support des nouvelles fonctionnalités de JavaScript au fur et à mesure de leur apparition, un meilleur support des source maps, l'amélioration du style literate programming et une simplification du code interne du compilateur.

Un projet Kickstarter a été lancé pour réécrire le compilateur CoffeeScript. Ce projet a été financé avec succès et s'appelle CoffeeScriptRedux. Jeremy voit la création de compilateurs comme une bonne chose pour CoffeeScript : "plus il y a de compilateurs pour un langage donné, plus ce langage est en bonne santé. C'est dans l'intérêt de CoffeeScript d'avoir plusieurs compilateurs indépendants".

La version 1.7 est déjà disponible sur GitHub ou sur le site officiel de CoffeeScript.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de lindustrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT