Logo JavaScript

Développer avec EmberJS

Flattr this!

Il y a quelques jours, je partageais avec vous mes impressions sur AngularJS. C'est au tour d'EmberJS comme promis. J'ai pu tester le développement d'une même application avec ces deux frameworks mis en concurrence.

Le vrai positif

Le développement avec Ember est intéressant en soit. Nombre de concepts pratiques au développement d'applications riches y sont inclus et on peut donc s'appuyer tranquillement sur ses composants. Le modèle MVC est bien intégré à l'architecture du projet, le binding plutôt réactif, possibilité de faire des propriétés dynamiques via le modèle pour les vues (équivalent des filtres AngularJS).

Là où ça pique

Le hic, c'est justement de ne reposer que sur ses composants. J'ai beau avoir fouillé, lu, décortiqué, lire le code d'un framework n'est pas suffisant pour en comprendre la philosophie et du même coup construire une application avec.

Vous l'aurez compris, le gros défaut d'EmberJS, c'est sa documentation. L'API est effectivement documentée mais ce n'est pas une aide des plus utiles quand on veut passer le stade du projet "Hello world !". Nombre de projets sont disponibles sur GitHub pour se former mais comme toujours, un certain nombre ne fonctionnent pas, une autre bonne proportion a été réalisé sous d'autres versions d'EmberJS avec des éléments soit deprecated soit carrément disparus. L'autre portion, fonctionnelle et à jour, se contente souvent d’être des "Quick Start" sans aucune richesse du genre chargement dynamique de modules, voire souvent même sont d'ailleurs mono-module. Pas terrible pour construire une vraie appli. J'ai du me battre tout seul pour intégrer du multi-modules dans ma logique applicative et ainsi de suite.

En soit ce n'est pas très grave mais aussi parce que j'ai eu le temps et la patience de le faire. Ce n'est pas un luxe que tout le monde peut s'offrir, surtout en entreprise.

Dernière chose que je lui reprocherai : sa lourdeur. Forcément, comparé à Angular, Ember est un poids lourd. Devoir charger des templates liés à des vues, des contrôleurs blindés de méthodes pratiques. Méthodes permettant notamment de manipuler le DOM. Des modèles ressemblant aux modèles des applis MVC d'applications lourdes. Et il en va de même avec les vues.

Mise en parallèle

Ça me rappelle franchement le développement sous C# avec les classes partielles .Net. Qui en lui même est très bien conçu pour son usage. Précision, je ne trolle pas sur cette comparaison. J'ai un peu développé avec C#.Net, des applis lourdes, de l'embarqué, du mobile, ... Et j'ai particulièrement apprécié cette expérience.

Et donc ?

En lui-même EmberJS est un bon framework, dans la lignée de l''existant. Il fait les choses mieux que d'habitude et mérite  sa place dans les meilleurs frameworks MVC pour JS.

Mais comparé à la simplicité d'AngularJS qui a été bien mieux pensé au plus proche de ce qu'est le web à mon sens, il ne tient pas la distance.

Les technologies du web se sont toujours contentées de copier leur pair qu'est l'appli lourde. De suivre le mouvement et non de prendre son indépendance.

Je ne dis pas que cette indépendance est acquise avec Angular, je dis juste qu'on s'en rapproche plus et qu'enfin nous commençons à disposer d'outils réellement liés à la nature du web.

Développer avec EmberJS est en soit une bonne idée. Ça manque de doc, ça manque de simplicité mais ce framework fait très bien son boulot. Je regrette juste qu'ils n'introduisent pas d'idées nouvelles, qu'il ne fasse que très bien améliorer l'existant.

Le web

Le web n'est plus un enfant qui calque son comportement sur ce que font ses parents. Fini de pousser une poussette miniature avec une peluche dedans. Le web doit enfin être développé tel qu'il est réellement.

Les navigateurs ne doivent pas être qu'un moteur d'affichage de DOM, ils gèrent le DOM. Ils y appliquent nos feuilles de style, exécutent nos applications riches mais ne vont pas jusqu'au bout en ne donnant pas au DOM l'outil d'être au service du développeur, pas d'être juste une couche de présentation. C'est l'idée qu'Angular essaie d'introduire, et celle-ci me plait.

Flattr this!

A propos de Mathieu

Ingénieur développeur web dans la vente par correspondance B2B, adepte de nouvelles technologies et d'innovation. Vous pouvez aussi me retrouver sur Twitter @mathrobin
Cette entrée a été publiée dans JavaScript, avec comme mot(s)-clef(s) , , , , , , , , , . Vous pouvez la mettre en favoris avec ce permalien.
  • Cryde

    Je me dis « cool » je vais enfin pouvoir voir comment ça marche un peu avec cet article, ben non ! 😀
    Tu aurais pas du mettre un titre pareil mais plutôt « Mes impressions sur EmberJS »

    Bonne continuation !

    • http://www.mathieurobin.com/ Mathieu

      Il est vrai que le titre est assez trompeur maintenant que tu le dis. Désolé…
      Et ce ne sont pas que des impressions mais un vrai retour d’expérience. J’ai développé avec pendant presque 5 mois. J’ai subi tous les changements de version non-stables de ces derniers mois, ça a été assez funky :)
      Merci pour l’encouragement en tout cas !
      PS : je ferai surement quand même un tuto « premiers pas avec EmberJS », quand j’aurai le temps.

  • http://postitme.com Jérôme

    Salut Mathieu, assez bon comparatif, je me tâte en se moment je suis sur backbone, toi qui est à l’affu que peux-tu me dire à son sujet, objectivement est-ce un bon framework, même si je sens que ton cœur balance pour Angular.

    • http://www.mathieurobin.com/ Mathieu

      Salut ! J’ai pas trop utilisé Backbone. Mais il a un avantage certain, son ancienneté. Du coup, la doc ne manque pas et les exemples non plus. Je ne peux pas en dire vraiment plus. Désolé

  • foxmask

    Coucou,
    bon ben moi j’ai fait les tuto d’AngularJS (il y a peu) « pour voir » et ai trouvé ca simple. Mais comme il y a des soucis avec la partie SEO chez AngularJS, me suis dit voyons voir Ember.js s’il s’en sort mieux, mais là, comme tu le dis; 0 tuto ; juste le startkit qui fait le hello world, et comme je suis loin d’être au niveau de « yoda » dans le monde JS ; ben j’arrête là l’xp Ember.js … dommage surement mais sans doc aucun framework ne fait le poids.
    @tchao 😉

    • http://www.mathieurobin.com/ Mathieu

      Du coté de EmberJS, ça progresse gentiment mais surement. Après c’est vrai que le problème du SEO est gênant.

      Ceci dit, il y a des solutions pour AngularJS. D’autant que c’est un produit Google, ce problème devrait vite disparaître. Jusqu’à maintenant, je n’ai pas eu à m’y confronter vu qu’AngularJS ne me sert qu’en applications d’administration et que j’ai tendance à préférer le plus possible de « statique » du coté visible par le client non-connecté et donc les robots.

      • http://www.michaelgallego.fr/blog/ bakura

        Merci de tes différents retours, c’est globalement la conclusion à laquelle je suis également arrivée, même si le système de routage d’Ember à l’air bien mieux fait et ressemble davantage à ce que je trouve dans Zend Framework 2 en PHP, à savoir pouvoir avoir des routes filles, et surtout pouvoir les nommer. Ca permet d’éviter de hard-coder les routes dans le code, si on décide de changer les URL, ça le change automatiquement partout. C’est ce que semble proposer Ember.JS et j’espère que le routing d’Angular va se perfectionner un peu.

        Concernant le SEO, je n’ai pas trouvé de super solution. Pour le moment, la solution la plus prometteuse consiste à… utiliser une bibliothèque comme PhantomJS afin de générer côté serveur la vue lorsuqe l’on s’aperçoit que le robot Google vient visiter la page. Voir cet article : http://www.yearofmoo.com/2012/11/angularjs-and-seo.html

        D’ailleurs, petit truc marrant, la doc d’AngularJS n’est absolument pas indexée sur Google (essayez ;-)…

Articles liés