Quel est votre retour d'expérience d'AngularJS sur la maintenabilité quand les applications grandissent ?
Le 2016-01-17 09:07:19, par grunt2000, Membre éclairé
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 :
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.
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...
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.
-
Marco46Expert éminent séniorJe 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 ?
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 ?
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 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 quoiPourquoi 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 ?Quels sont les atouts aussi d'AngularJS, qui ont vraiment permis d'éliminer des sources d'erreur qui existaient auparavant ?
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 facilementle 18/01/2016 à 10:45 -
nathiebMembre expérimenté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 ailleurshonte à 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.
Olivierle 20/01/2016 à 16:39 -
frfanchaMembre éprouvé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...).le 21/01/2016 à 17:35 -
Marco46Expert éminent séniorAu fait, si Google décide unilatéralement de passer à Angular 3.0 au lieu de Angular 2.0, vous faites comment ?Personnellement vu les soucis de perf remontés, je n'ai pas très envie (mais ça passerait) pour l'instant du Angular sur mobile.
Du coup je m'interroge ...
Il y a un cout d'entrée lors de la 1ère connexion du client parce qu'il faut charger pas mal de ressources d'un coup. Oui certes, en se démerdant bien c'est l'affaire de qqs secondes sur un mobile pourri avec une connexion pourrie.
Ceci fait c'est d'une rapidité et d'une fluidité imbattable par une webapp construite côté serveur. IMBA comme ils disent dans les jeux vidéos.
Le SEO est en revanche le vrai problème.le 29/01/2016 à 11:06 -
npuzinMembre avertije 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)le 18/01/2016 à 14:31 -
marc.collinMembre émériteIl 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/
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 smartclientle 21/01/2016 à 14:02 -
ndalabaMembre habitué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.le 21/01/2016 à 14:11 -
ddoumecheMembre extrêmement actifPour l'avoir utilisé sur de nombreux projets, GWT n'avait rien d'improductif.
Par contre, il réclamait une machine de course et une bonne connaissance de Java.
Donc soit on avait des connaissances sur le sujet, qu'on vienne d'un cursus normal ou qu'on soit développeur backend,
soit il ne fallait pas s'y aventurer.le 22/01/2016 à 10:19 -
abelar_sMembre actifBonjour,
sans juger du framework lui-même que j'ai trop peu utilisé, voici quelques axes pour juger les retours, qu'on oublie souvent :
1. ARCHITECTURE
La mode en archi est désormais au client riche et aux API JSON. C'est devenu possible :
- par les frameworks front (Backbone, Ember -- j'ai entendu plus de gens heureux sur ces deux-là que sur Angular d'ailleurs),
- par les frameworks back (Rails, Django, Phoenix...) et la "standardisation" du JSON
- par la variété des terminaux et donc la mode revient au "client riche + API"
2. PERF
Je vois deux sortes de présentations sur Angular :
- celles qui montrent le côté magique (le marketing)
- celles qui montrent les soucis de perf et les astuces (les REX -- retour d'expérience)
La vérité est forcément entre les deux : une productivité accrue mais toujours besoin d'astuces et d'expertise (logique, ça ne me choque pas).
La question est donc : pour combien de temps et avec quelle dette technique ?
Difficile de dire et comme le demande le post de départ : où sont les vraies données ?
3. MOBILE
Le mobile ! C'est la clé du problème. Allez-vous faire une app mobile ? Pour quel(s) OS ?
Personnellement vu les soucis de perf remontés, je n'ai pas très envie (mais ça passerait) pour l'instant du Angular sur mobile.
Je ferais plus volontiers une appli native... mais alors il faudra un effort significatif pour avoir du IOS, Android et peut-être d'autres.
Par contre, la tablette (qu'on imagine plus puissante) pas de souci pour faire du web, et la smart watch je verrais quelque chose de plus léger.
Plus le temps passe, plus j'aime le "low tech" : un minimum d'HTML propre que tous les terminaux peuvent lire facilement, ça vous permet :
- l'usage standard sur desktop et tablette... mais bien plus rapidement que vos concurrents
- l'évolution, les compétences, les équipes... qui savent et maîtrisent ce qu'elles font
- l'usage web sur mobile correct, "anciens mobiles" décent, et même smart watch si c'est très léger
En bonus :
- ça marche aussi pour les robots / crawlers (et le SEO associé)
- ça marche aussi sur les screen-readers (accessibilité)
Bref, je ne suis pas contre la nouveauté et l'innovation bien au contraire, mais au moins :
- tout ce qui est un peu trop malin est sur le serveur, que vous maîtrisez
- tout ce que vous ne maîtrisez pas (le monde extérieur et le mode de consultation) n'a que peu de prérequis
Oui, pour l'instant et depuis que je fais du web, je suis plutôt pour l'intelligence sur le serveur
C'est un adage courant dans le monde du code, d'être libéral dans ce qu'on accepte et strict dans ce qu'on renvoie !
4. LA LICENCE, le point bonus qui n'a rien (?) à voir avec Angular.
Pour Sencha et ExtJS, j'avais fait quelque chose de solide dessus mais le "dual-licensing" sentait le sapin depuis 2009, voire 2008...
Ça ne me surprend pas et je suis content de ne pas avoir misé dessus.
Au fait, si Google décide unilatéralement de passer à Angular 3.0 au lieu de Angular 2.0, vous faites comment ?
KYC (Know Your Customer) mais... surveillez vos outils !le 28/01/2016 à 17:57 -
Marco46Expert éminent séniorUn mécanisme d'injection de dépendances. Rien de sérieux ne peut être entrepris sans ça.
J'avoue néanmoins que la syntaxe de Vue.js est séduisante, mais ça reste de l'AngularJs relooké avec moins de fonctionnalités.le 01/02/2016 à 10:19