Ember.js vient de publier la version 1.9 qui apporte le support d'Handlebars 2.0, ainsi que des améliorations de performances et l'introduction d'HTMLBars pour Ember 1.10 beta.
Depuis la publication d'Handlebars 2.0 en octobre 2014, l'équipe Ember a reçu de "nombreuses demandes de mises à jour d'Ember pour utiliser la dernière version", selon Robert Jackson, membre de l'équipe core d'Ember.
Matthew Beale, un contributeur d'Ember, a annoncé cette dernière publication sur le blog Ember.js, dans l'article Ember.js 1.9 et 1.10 Beta publiés, où il explique "l'ajout du support pour les templates Handlbars 2.0," sans conserver la rétrocompatibilité avec les versions précédentes d'Handlebars.
Beale souligne que ce changement "n'affecte pas la syntaxe des templates ou de l'API publique des applications Ember".
Pourtant, au moment de la sortie de la beta de la 1.9 en octobre, on se demandait si Handlebars allait casser les applications Ember, Yehuda Katz (un des développeurs d'Ember) rassure en ces termes :
Cela n'affecte pas l'API de templating d'Ember. Handlebars 2.0 est principalement une réorganisation de l'API publique d'Handlebars pour le rendre plus à même de fonctionner en module, et puisque vous travaillez avec l'API d'Ember, nous pouvons l'abstraire.
Handlebars 2.0 apporte également des corrections de bugs importantes qui vont nous permettre d'améliorer Ember (entre autres d'utiliser les espaces de nommage pour les composants).
Etant donné qu'Handlebars est uniquement une dépendance d'Ember, les développeurs utilisant Ember n'ont pas besoin de modifier leurs templates pour être compatibles.
Avec cette nouvelle 1.9 arrive également la beta de la 1.10 et l'introduction d'HTMLBars dans Ember.js. HTMLBars est une nouvelle bibliothèque de templating construite sur Handlebars et créée par Erik Bryn (un des développeurs d'Ember.js).
Dans sa présentation à l'Emberconf intitulée "HTMLBars : Le système de templates nouvelle génération d'Ember.js (en)", Bryn décrit HTMLBars comme une "opportunité de corriger certains problèmes fondamentaux de performances d'Ember".
Il demande "Qu'est-ce qui excite les gens dans HTMLBars ?" et répond "la syntaxe".
Il détaille ensuite :
C'est notre idéal non ?
<div class="{{foo}}">{{bar}}</div>
Mais voilà ce que l'on doit faire aujourd'hui en Ember :
<div {{bind-attr class="foo"}}>{{bar}}</div>
Avec HTMLBars, nous avons notre syntaxe idéale !
<div class="{{foo}}">{{bar}}</div>
HTMLBars sait lorsqu'une moustache est utilisée dans une balise ouvrante, un attribut ou à l'intérieur d'une balise.
<div {{foo}}></div>
<div class="{{bar}} baz"></div>
<div>{{baz}}</div>
Ce qui signifie "plus de balise script".
Beale commente cette nouvelle annonce ainsi : "Ce nouveau système de rendu marque une étape importante pour le framework, et en maintenant une compatibilité complète de l'API, cela prouve notre volonté de préserver une stabilité sans stagner".
L'ajout des streams dans Ember.js 1.9 est également un point important, en venant remplacer les bindings bas niveau du système de rendu. Là où précédemment les bindings étaient basés sur un système d'observateurs clé-valeur, les streams permettent de différencier une notification de changement d'une nouvelle valeur calculée.
Beale ajoute également que "l'addition des streams dans Ember et leur utilisation dans la couche des vues améliore les performances de rendu, simplifie de nombreux helpers et prépare le code d'Ember pour HTMLBars".
Ember.js est publié sous licence MIT. Les lecteurs d'InfoQ peuvent contribuer à Ember.js via le projet GitHub