Quel est votre retour d'expérience d'AngularJS sur la maintenabilité quand les applications grandissent ?

Le , par grunt2000, Membre confirmé
Bonjour,

AngularJS a eu ces deux dernières années la faveur des développeurs. J'en ai lu beaucoup de bien, et il semble simplifier un grand nombre de choses.
Dans l'absolu, il me suffirait de m'y ruer.

Mais voilà, je suis plus que sur mes gardes à chaque annonce d'un truc merveilleux :
GWT a été en son temps très encensé. Mais des développeurs de Google admettent maintenant qu'ils étaient certains à le trouver improductif. C'était donc ça ce sentiment diffus que j'avais en l'employant ?
Spring est absolument génial : il suffit de trouver des gens capables de tout maîtriser, et il n'y a jamais assez de maîtrise et de compréhension de ses standards aux yeux de ses adeptes. Mais ce qu'il est important de retenir, c'est qu'il n'y a que des bonnes idées dedans. Et ça, il ne faut jamais oublier de le dire, même pour Spring MVC. Spring est très simple à configurer : d'ailleurs, une bonne partie de l'apprentissage, c'est apprendre à le configurer...
La méthode Agile décuple l'efficacité de tous : elle permet aussi de faire du théâtre avec des chorégraphies et des postures, et force déclamations de son agrément et de son plaisir d'y être intégré.
Java 8 et les Lambdas sont révolutionnaires : c'est évident qu'ils feront tout ; les lambdas c'est sympa. Et il n'y a pas d'abus...

Bon voilà pour le placardage. J'ai une vingtaine d'années de programmation derrière moi maintenant, et dès que quelque chose est génial je n'ai qu'une question :

Deux ans après son apparition,
qu'en est-il de la maintenabilité des applications produites avec ?
Une vaste application avec AngularJS montre quels bénéfices et quelles limites ?


Quelles sont les mauvaises pratiques éventuelles que l'on y a vues naître, les pièges (voire les affres) que l'on rencontre en l'employant ?
Une entreprise qui va migrer tout son GWT ou JSF ou Struts en AngularJS ou développer une grande application avec des quantités et des quantités de code AngularJS va devoir faire particulièrement attention à quoi ?
Pourquoi l'annonce de l'arrivée de la deuxième version d'AngularJS a-t-elle tellement troublé ? Quel impact général va-t-elle avoir ? Est-ce grave ? Struts 2 en son temps avait prétendu remplacer Struts 1 et n'avait réussi qu'à faire fuir tout le monde...

Quels sont les atouts aussi d'AngularJS, qui ont vraiment permis d'éliminer des sources d'erreur qui existaient auparavant ?

Merci de votre retour d'expérience.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de Marco46 Marco46 - Modérateur https://www.developpez.com
le 18/01/2016 à 10:45
Je réponds très rapidement j'ai pas le temps de détailler il faudrait écrire un livre


Deux ans après son apparition,
qu'en est-il de la maintenabilité des applications produites avec ?
Une vaste application avec AngularJS montre quels bénéfices et quelles limites ?
Comme toutes les applications, tout dépend si les bonnes pratiques sont respectées. Y-a-t-il des TU ? Sont-ils à jour ? La doc est-elle à jour ? Les bugs ont-ils été corrigés ? Les bonnes pratiques ont-elles été respectées ?

Une webapp développée en Angular n'est pas particulièrement meilleure qu'une autre développée avec une autre techno dans la durée. Ce qu'on peut dire en revanche c'est que si ce que j'ai cité ci-dessus est respecté le TMA doit être généralement plus faible (ne serait-ce que parce que le front est dissocié du back et que donc pour faire évoluer le front il suffit de ne relivrer que ce morceau, ça semble évident mais ça compte pour beaucoup).

Quelles sont les mauvaises pratiques éventuelles que l'on y a vu naître, les pièges (voire les affres) que l'on rencontre en l'employant ?
Pour moi le plus évident et le plus dommageable c'est d'écrire de la logique dans les contrôleurs. J'en suis à ma 4ème webapp d'importance et clairement c'est le plus gros caveat. Ca a un impact majeur sur la lisibilité, la facilité à refactorer et la TMA et le TTM.

L'autre gros piège c'est de vouloir faire du site web php classique avec du Angular dedans parce que c'est hype. Angular s'utilise dans un contexte précis (webapp SPA), il n'est pas adapté à un autre contexte (templating côté serveur).

Un dernier piège c'est le référencement. Visiblement ça s'améliore mais c'est un point compliqué qui est valable pour toute les webapp utilisant une techno javascript pour architecturer le site (ember, Angular, etc ...). Ca peut bouffer beaucoup plus de temps que pour une appli classique standard où les pratiques sont sèches sur ce sujet.

Une entreprise qui va migrer tout son GWT ou JSF ou Struts en AngularJS ou développer une grande application avec des quantités et des quantités de code AngularJS va devoir faire particulièrement attention à quoi ?
Il ne s'agit pas d'une migration mais d'une réécriture.

Il faudra faire attention à :
- savoir si angular est adapté au besoin (mais si on vient de GWT ça devrait aller)
- éviter les mauvaises pratiques
- encourager les bonnes

En définitive, il est nécessaire de recruter au moins une personne qui a une expérience importante (au moins un voire deux projet(s) réussi(s)) afin de cadrer les pratiques. Quelqu'un comme moi quoi

Pourquoi l'annonce de l'arrivée de la deuxième version d'AngularJS a t-elle tellement troublé ? Quel impact général va t-elle avoir ? Est-ce grave ?
Il y a eu du trouble car beaucoup de chamboulements annoncés. En réalité il "suffit" de suivre les bonnes pratiques (pas de logique dans les contrôleurs, pas d'usage de $scope, faire un maximum de petites directives, écrire 99% de sa logique dans des services testés unitairement) pour que la migration soit beaucoup moins douloureuse derrière.

Quels sont les atouts aussi d'AngularJS, qui ont vraiment permis d'éliminer des sources d'erreur qui existaient auparavant ?
J'ai peu développé en web dans d'autres techno que Angular, je viens du client lourd. Pour moi il s'agit surtout d'unifier un peu tout dans un pot commun (jquery n'est pas un framework mais une lib. Pour moi angular est le 1er vrai framework de dev js côté front). Il s'agit également d'une architecture cohérente avec le web qui s'adosse sur l'archi web services REST. Il a donc fallu un engouement pour cette archi pour que les webapp front deviennent une réalité.

EDIT : Concernant les atouts ma réponse est très light il y en a plein, MVVM, services, directives, TU intégrés etc ... Mais les infos sont trouvables facilement
Avatar de npuzin npuzin - Membre averti https://www.developpez.com
le 18/01/2016 à 14:31
je maintiens en prod 2 grosses applis angular, et on a pas de soucis particulier.

on est en version angular 1.2.x car on a des utilisateurs ie8. Angular 2.0 je ne me lancerait pas la dedans pour l'instant, c'est trop tot.

Pour prendre un bon depart avec angular:

- maitriser tres bien le javascript est indispensable (3 ou 4 jours de formation JS intensive est la bienvenue pour qq'un qui ne maitriserait pas le JS moderne)
- ne pas faire de templating coté serveur effectivement comme dit plus haut (le back-end devrait etre un back-end REST pour bien faire)

si tu fais du java, angular + jboss rest easy ca marche bien

si tu as le gout de l'aventure, tu peux faire du JS fullstack, avec un backend javascript (node.js /expressjs)
Avatar de nathieb nathieb - Membre expérimenté https://www.developpez.com
le 20/01/2016 à 16:39
Bonjour,

Je viens de découvrir Angular, et j'avoue que j'ai trouvé enfin une vraie motivation pour faire du JS (que je hais par ailleurs honte à moi).
Il faut dire que JSF/EJB/JPA ou Symfony sont mes amis, le background explique l'avis sur Javascript.

En fait je retrouve dans Angular tout ce que je souhaitais :
- Architecture d'une appli façon MVC
- cadre de travail
- gain de temps ...

Il faut un temps certain, pour tout assimiler, mais c'est comme tout "Framework".

je partage l'avis sur AngularJs tout frontend, en effet, j'ai choisi cette techno pour une appli Cordova (donc application mobile) avec
Serveur REST Tomcat EE. et la séparation backend frontend est enfin magique. ce qui a eu tendance à m'agacer en Symfony.
Ce petit retour d'expérience me fait envisager différemment mes prochaines applis web. Si angular migre en 2.0 je n'aurais
que la partie front à repenser, pas la partie métier "enfin" un vrai investissement.

Pour le tests même philosophie, la séparation des couches me semble bien plus intéressante.
Le vrai plus, c'est ce côté MVC en Javascript, je ne suis guère à l'aise avec du code "spaghetti", en terme de maintenance
cela à un coût non négligeable, et je sais de quoi je parle, je l'ai pratiqué, je l'ai subit.

J'attends un peu de temps pour la future version, je sais que cela va me coûter encore du temps,
mais les retours sur investissements sont importants.

Olivier
Avatar de chaya chaya - Membre régulier https://www.developpez.com
le 21/01/2016 à 12:48
Je n'ai pas une grosse expérience d'Angular, mais je fais beaucoup de veille dessus en attendant qu'il devienne vraiment 'Le framework' to adopt. Pour le moment je suis sur un framework 'Ext-JS' qui permet de faire des singles page web app, de très grosse envergure (MVVM ou MVC) en full javascript avec une approche orienté objet similaire au Java.

Ce qui m'a bloqué sur Angular 1 c'est les vues, le manque de standardisation et la difficulté pour réaliser une application structurée. Je vois aussi Angular 1 comme le MVVM des pauvres (surement à tord pour certains d'entre vous). Je le sens parfaitement adapté pour de petites applications web.

Angular 2 a réglé ce soucis, ils nous fournissent des standards, et c'est correctement structurés, c'est vraiment une guideline pour la communauté. Actuellement j'attend juste une release de ng-material 2 en stable, et un éclaircissement sur le polymorphisme( le gros plus pour faciliter les évols et corrections des grosses applications) avant de vraiment me lancer dans des migrations. Et là je pense que ça ouvre la voie aux grosses app web.
Avatar de marc.collin marc.collin - Membre éclairé https://www.developpez.com
le 21/01/2016 à 14:02
Citation Envoyé par chaya Voir le message
Je n'ai pas une grosse expérience d'Angular, mais je fais beaucoup de veille dessus en attendant qu'il devienne vraiment 'Le framework' to adopt.
Il y en a tellement de framework de nos jours, ça change rapidement. D'ailleurs un concurent de angulars fait pas des anciens du projet est http://aurelia.io/

Citation Envoyé par chaya Voir le message

Pour le moment je suis sur un framework 'Ext-JS' qui permet de faire des singles page web app, de très grosse envergure (MVVM ou MVC) en full javascript avec une approche orienté objet similaire au Java.
surement un des frameworks les plus complets surtout au niveau des composants graphiques. Disponible en gpl. Il y a quand même de la demande pour ce framework.

Dans le même genre il y a smartclient
Avatar de ndalaba ndalaba - Membre régulier https://www.developpez.com
le 21/01/2016 à 14:11
Je n'ai pas une grosse expérience ce angularjs; juste une petite application web dans le cadre de mon apprentissage.
Au moment où je commençais vraiment à m’intéresser au framework; voilà qu'on me parle de la version 2 qui est complètement différente de la première.

Entre temps je découvre vuejs qui me parait plus simple et très bien pensé.
Migration donc vers vuejs.
Avatar de marc.collin marc.collin - Membre éclairé https://www.developpez.com
le 21/01/2016 à 14:32
J'ai regardé vuejs et effectivement, ça semble intéressant.

Ce qui manque au framework web, c'est les composants graphiques. Il y en a très peu qui sont très évolué.
Avatar de chaya chaya - Membre régulier https://www.developpez.com
le 21/01/2016 à 15:19
Citation Envoyé par marc.collin Voir le message
Surement un des frameworks les plus complets surtout au niveau des composants graphiques. Disponible en gpl. Il y a quand même de la demande pour ce framework.
Ils sont en train de perdre toute la communauté, Sencha a fait des levées de fonds, Capital Sequoia est rentré dans la place avec quelques autres investisseurs, ils ont ensuite remplacé le PDG par: Art Landro (Un PDG purement taillé pour la traite des vaches à lait). Le GPL n'a pas été renouvelé pour la dernière version de ExtJS 6.0.1, et GXT 4 n'existe tout simplement pas en GPL, ils ont dé-publié la doc de GXT 3 GPL.

Les tarifs sont prohibitifs (la licence est passé depuis, entre guillemets de 500€ à 1500€), et le minimum de licence à l'achat est de 5 contre 1 auparavant (soit mini 5000€ avec la 'reduc').

Voila pourquoi je cherchais une alternative (Angular 2 + ng material 2), Sencha a choisit la voie des investisseurs pour se développer, et a laissé l'open source de coté.
Avatar de marc.collin marc.collin - Membre éclairé https://www.developpez.com
le 21/01/2016 à 15:37
C'est surtout le minimum de licence à acheter qui fait mal. Moindrement tu fais de la consultations même à 1500€ l'unité tu rentres très rapidement dans ton argent... tu passes ça dans certains frais d'entreprise...

Dommage, pour les petites entreprises, pour les grosses je doute que ça leur fasse réellement mal. Avec le support et cie en arrière... c'est pas cher... suffit de perdre quelques fois du temps sur un framework x et que tu charges à ton client 600€, 700€ jours... pour t'en mordre des doigts... suffit de voir les questions non répondu ici, stackoverflow et cie

c'est le choix entre une vision court terme ou non.... c'est comme prendre un débutant qui fera une tâche x en 1 mois alors que l'expert le fera en 1 semaine... au final le coût sera similaire mais avec un gain de temps

il reste smartclient... qui est un peu moins riche que sencha mais largement plus que tout ce qui se fait ailleurs, dispo en LPGL et part à 750$...
Avatar de frfancha frfancha - Membre confirmé https://www.developpez.com
le 21/01/2016 à 17:35
Nous avons terminé la réécriture de toutes les applications de data entry de la boîte avec angularjs, venant d'applications qui étaient en Windows (en IBM VisualAge for Smalltalk pour ceux qui connaissent).
Nous n'utilisons pas de logiciels externes donc cela couvre tout: aussi bien la comptabilité de A à Z, la description des contrats, la gestion client, ...
Cela fonctionne parfaitement avec les avantages d'un browser et aussi les limites bien sûr.
La politique de la maison a toujours été de mettre toute la logique métier en SQL (SQL Procedures) et, ensuite, seulement le minimum de cette logique pour faire des écrans "sympas" est dupliquée dans le code "écran".
Cela a permis une migration souple et "sans risque".
Angularjs est 1.4.8 et seuls ui-bootstrap (1.1) et block-ui sont utilisés en plus (pas de jQuery).
Un des gros gains de cette migration (mais ce n'est pas lié à angularjs) c'est qu'en même temps nous avons couvert tous les écrans avec des tests selenium, ce qui permet de changer des éléments centraux le coeur léger, sans crainte d'impact imprévu (ou alors il manque un test...).
Contacter le responsable de la rubrique JavaScript