vendredi 8 novembre 2013

AngularJS, pas encore prêt pour le mobile

angularjs

Mardi dernier avait lieu la soirée de présentation d’AngularJS par nos amis de Sushee et OrangeLabs via CodeDarmor, l’occasion de voir si cette librairie javascript est aussi révolutionnaire qu’elle y paraît.

Au final, si l’effet whaou est bien là avec le « two way data-binding », notre avis reste mitigé.

Le data-binding est ce qui rend les démos AngularJS bluffantes : à chaque modification des données du modèle, la vue se met à jour. Vous pouvez mettre des références à des données partout dans votre DOM, AngularJS les tient à jour pour vous.

Fini les modifications sur DOM à la jQuery, la librairie s’en charge. La séparation « modèle, vue, contrôleur » est enfin possible en HTML5. En un mot : Génial!

Sauf que pour effectuer cette magie, AngularJS scrutte les événements de modification du DOM, doit maintenir des références sur les différents items et leur noeud dans le DOM et peut être amené à mettre à jour tout le scope de votre contrôleur alors que seule une petite valeur a changé dans votre objet.

Si vous voulez des animations, AngularJS ajoute également automatiquement des classes à tous les éléments du DOM lors de leur ajout, suppression ou déplacement. Y compris les éléments que vous n’animerez pas.

Tout cela est très pratique, c’est certe un peu sauvage comme façon de faire mais la plupart des navigateurs habituels sont capables de manipuler tout cela sans que vous n’y voyez quoi que ce soit.

Par contre, si vous embarquez vos applications HTML5 dans une application native, ces manipulations vont vite ralentir votre application, les « webviews » étant beaucoup moins puissantes qu’un « vrai » navigateur.

Bien que ce point des performances soit bloquant pour nous, il nous faudra garder un oeil sur AngularJS, car de nombreuses personnes travaillent déjà sur comment adapter AngularJS au mobile sans perdre trop en performance.

AngularJS est donc un framework JavaScript prometteur mais nous allons probablement devoir continuer encore un petit peu avec Handlebars et Zepto ;)

Aucun commentaire:

Enregistrer un commentaire