Certaines applications web de grande envergure sont extrêmement complexes. Pour leur développement, JavaScript (JS) ne peut pas être utilisé seul pour créer une base stable et garantir la qualité ainsi que la pérennité du code. C’est pourquoi il existe des frameworks MVC (model view-controler) qui fournissent une structure et des conseils pour accompagner l’élaboration de ces applications.
Pourquoi s’appuyer sur un framework MVC JS ?
Les frameworks MVC JS sont basés sur le design pattern model-view-controller (modèle-vue-contrôleur) et faits pour gérer complètement l’interface utilisateur d’une application en JavaScript sans rechargement.
Parmi les frameworks JavaScript, les plus connus figurent entre autres AngularJS, BackboneJS, et EmberJS.
Si toutes ces solutions semblent, à priori, répondre aux besoins rencontrés lors du développement d’applications web, sur quels critères doit-on se baser pour séelctionner la plus performante d’entre elles?
Dans quels cas les utiliser?
1. Votre application nécessite une connexion asynchrone au back-end.
2. Vous utilisez des fonctionnalités qui ne nécessitent pas un rechargement de la page.
3. Une grande partie de la visualisation ou la manipulation des données sera dans le navigateur (client-side) plutôt que sur le serveur.
4. Vous avez recours à de nombreuses modifications de données (boutons, événements).
Comparaison entre Angular, Backbone et Ember
La sélection d'un Framework JavaScript MVC peut être complexe tant il y a d’options à considérer et de facteurs à prendre en compte. Consulter http://todomvc.com/ peut aider à prendre connaissance de toutes les alternatives possibles.
AngularJS
AngularJS est produit par Google et gagne rapidement en popularité. Une de ses particularités est qu’il fait un binding (couplage d’information) bi-directionnel entre la vue et le modèle. Si une donnée est modifiée, la vue est mise à jour. Cela a pour effet de réduire considérablement le nombre d’évènements, les manipulations de DOM et les multiples appels Ajax. Il y a une vraie séparation entre la vue et le contrôleur, ce qui, en terme de maintenance et de testabilité, est un avantage non négligeable.
Avantages :
- Injection de dépendance;
- Le soutien par Google;
- Un framework de test intégré;
- Intégré dans la validation du formulaire;
- Possibilité d’utiliser des directives;
- Une extrême facilité à déboguer.
Inconvénients :
- Courbe d'apprentissage importante;
- Liaison de données qui peut être problématique pour les pages avec de grandes quantités d'informations;
- Difficulté à mettre en œuvre.
BackboneJS
BackboneJS est plus léger et plus simple. Cela le rend plus facile à appréhender, mais son niveau d’abstraction est plus faible.
Ainsi, des vues sont liées à des modèles afin d’éviter les appels Ajax dans tous les sens. Ainsi, BackboneJS permet de faire une application single-page performante et facile à maintenir.
Backbone est un framework simple qui se base sur la puissance des deux célèbres librairies $ Jquery et _Underscore.js, auxquelles il ajoute une liste d’évènements. À l’aide de 4 classes, - Modèle/Collection, Vue, Routeur - il structure les applications web.
Avantages :
- Minimaliste;
- Flexible;
- Grande communauté, excellent support;
- Code source simple à lire.
Inconvénients :
- Nécessite des dépendances externes;
- Nécessite des plugins pour devenir aussi complet en terme de fonctionnalités que d'autres frameworks MVC;
- Limité et parfois pas assez structurant.
EmberJS
EmberJS est un framework full-stack et gère donc toutes les couches applicatives : routeur, contrôleur, vue et modèle. Ember est privilégié par des développeurs ayant déjà une approche orientée objet (Java, Ruby, etc.).
Une des grandes forces d’Ember est le databinding (couplage de données), non seulement au niveau de la vue, mais aussi au niveau de tous les objets. EmberJS se rapproche plus d’AngularJS en terme de performance.
Avantages :
- Développement rapide;
- Peu de configuration nécessaire;
- Convention sur l'approche de configuration;
- Permet une synchronisation beaucoup plus facile des données avec JSON API.
Inconvénients :
- Difficulté d’apprentissage;
- Documentation pas toujours à jour;
- Très complexe et très lourd, ce qui est, pour une application mobile, un réel désavantage;
- Diminution des utilisateurs et affaiblissement de la communauté.
Lequel Choisir?
Utilisez Angular.js si:
1. Vous voulez que votre framework MVC soit utilisé dans une application complexe pour assurer sa fiabilité et sa stabilité;
2. Votre application web nécessite de nombreux tests pour vérifier sa fonctionnalité.
Utilisez Backbone.js si:
1. Votre application web a des exigences incertaines (évolutive) ou nécessite une grande flexibilité pour le développement futur.
2. Vous avez besoin de pouvoir changer ou retirer facilement des parties de votre application.
3. Vous souhaitez commencer avec une solution minimaliste pour comprendre les principes fondamentaux des frameworks MVC (MVP).
Utilisez EmberJS si:
1. Vous avez déjà de l'expérience avec Ruby et appréciez l'aide de sa convention sur l'approche de configuration.
2. Vous avez besoin d'un framework qui aide à développer des solutions et des prototypes rapidement.
3. Votre application web a besoin d'un framework pour gérer l'interaction avec une API JSON avec très peu d'effort requis.
Il n’y a pas de réponse définitive à la question:
« Quel est le meilleur framework ? »
En effet, pour la problématique du développement d’une application, chaque framework apporte une réponse différente, laissant aux développeurs le soin de choisir ce qui leur convient le mieux.
Le meilleur conseil que je peux donner pour choisir son framework reste de tester chacun d’entre eux pendant quelques jours de façon à voir lequel correspond le mieux aux besoins (et aux développeurs) de l’équipe.
Dans tous les cas, Nixa peut vous aider dans le développement de vos applications, peu importe le choix que vous en ferez. À Montréal, Nixa est la boîte de développement web de choix pour vos projets en Angular, Backbone ou Ember.