Bon, pour résumer l'expérience :
1/ Oui le Javascript ça pue en l'état, et ce quelque soit le framework utilisé. C'est une techno qui a été complètement victime de son succès, qui était tout à fait adaptée pour faire des manipulations simples du DOM mais qui est complètement dépassée pour faire des clients Web riche et qui rend le résultat non maintenable. Il est plus qu'urgent qu'on passe au standard ECMAScript 4 parce que là c'est bien plus agréable de développer en Flash/ActionScript 3 qui utilise ECMAScript 4 plutôt qu'en JavaScript. (Oui bon pas taper.)
2/ Il est impossible de faire du code de qualité en Javascript, car comme chaque navigateur implémente une API Javascript différente et avec des implémentations plus ou moins boguées (voire très boguées dans le cas d'IE) on est obligé de faire des workarounds du workaround, etc.
3/ GWT est séduisant, mais bon, dès qu'on commence à avoir des layouts compliqués là encore bonjour les surprises, même si ça reste plus agréable de développer en GWT qu'en JS directement ne serait-ce que parce qu'à cause de l'absence de typage de Javascript on ne peut pas faire d'API de qualité dans ce langage...
Il y a une image qui résume d'ailleurs très bien ce qu'est le développement web ici, et qui n'est pas tant exagérée qu'on pourrait le penser : http://humor.beecy.net/geeks/web-design/
Pour revenir à nos moutons :
1/ ExtJS supporte plein de widgets, oui ça c'est vrai.
2/ Il y a vraiment des composants tout faits pour tout en ExtJS.
Mais :
1/ La maintenance d'une appli en Ext est très compliquée, ne serait-ce que parce que faire un layout avec une page HTML qu'on intègre dans une fenêtre, c'est toujours plus simple que de le coder en Ext.
2/ Le nombre de mauvaises surprise est assez énorme avec Ext, surtout quand on doit faire des tests sur différents navigateurs.
- Essaie en particulier les forms qui contiennent des tab panels, et tu verras que tu as le choix entre soit avoir un rendu foireux sur les combobox et les grid panels, soit submitter des forms partiels avec des valeurs manquantes parce que les widgets n'ont pas été générés correctement.
- De même, avec Ext3 ils ont changé les types supportés par les records sans les documenter. (type='boolean' est passé en type='bool' alors que la doc affiche toujours type='boolean'...)
- De même, en Ext3 si tu oublies le paramètre forceLayout=true sur un widget bonjour les surprises.
- Si tu oublies de mettre un hideMode à 'offsets' sur un panel qui a un cardlayout au bout d'un moment, en switchant entre tes panels les boutons ne deviennent plus cliquables.
- Les fuites mémoire des navigateurs.
- Essaie de limiter le nombre de requêtes Ajax simultanées que tu peux lancer depuis un site codé en Ext, tu vas bien t'amuser. (Oui les record et les store c'est très séduisant à première vue, mais si tu as un besoin spécifique qui n'est pas couvert par ces records et stores tu galères un max...)
- Et la liste est longue.
Par contre, JQuery est beaucoup plus simple, il y a des plugins de qualité assez variable mais la lib de base reste très simple et très stable, globalement. Tu as une bien meilleure maîtrise du code HTML généré si tu utilises des fenêtres étant donné que c'est toi qui l'écris et que les workarounds des différents navigateurs sont plus faciles à intégrer de ce fait.
Il faut implémenter des workarounds avec JQuery si tu utilises les applets Java sous IE (encore lui...), mais dans l'ensemble on a assez peu de mauvaises surprise.
Bref, oui ExtJS est très séduisant. Mais quand on creuse un peu, on se rend compte que c'est très difficile de stabiliser une appli en ExtJS. Il n'y a qu'a voir Yahoo Mail nouvelle version, certes ça claque mais c'est très lourd et franchement pas stable, et ça utilise YahooUI, qui est à peu de choses près la même chose qu'ExtJS. Le problème conceptuel d'Ext est qu'ils ont essayé de faire de JS un langage objet, alors que justement ce n'en est pas un.
JQuery est bien plus basique, mais en fait on maîtrise beaucoup plus ce qu'on fait. Par exemple sur le projet sur lequel j'ai bossé on a centralisé tous les appels Ajax dans un "objet" Javascript. Bien moins de problèmes de fuites mémoire, et le framework est orienté prototype comme Javascript donc en fait ça marche mieux.
JQuery a le gros avantage d'intégrer le principe KISS (Keep It SImple Stupid) que Ext semblent avoir oublié.
Donc à choisir entre les deux, je choisirais nettement JQuery.
[^] # Re: ExtJs
Posté par gojul . En réponse au sondage Ma bibliothèque javascript préférée. Évalué à 3.
Bon, pour résumer l'expérience :
1/ Oui le Javascript ça pue en l'état, et ce quelque soit le framework utilisé. C'est une techno qui a été complètement victime de son succès, qui était tout à fait adaptée pour faire des manipulations simples du DOM mais qui est complètement dépassée pour faire des clients Web riche et qui rend le résultat non maintenable. Il est plus qu'urgent qu'on passe au standard ECMAScript 4 parce que là c'est bien plus agréable de développer en Flash/ActionScript 3 qui utilise ECMAScript 4 plutôt qu'en JavaScript. (Oui bon pas taper.)
2/ Il est impossible de faire du code de qualité en Javascript, car comme chaque navigateur implémente une API Javascript différente et avec des implémentations plus ou moins boguées (voire très boguées dans le cas d'IE) on est obligé de faire des workarounds du workaround, etc.
3/ GWT est séduisant, mais bon, dès qu'on commence à avoir des layouts compliqués là encore bonjour les surprises, même si ça reste plus agréable de développer en GWT qu'en JS directement ne serait-ce que parce qu'à cause de l'absence de typage de Javascript on ne peut pas faire d'API de qualité dans ce langage...
Il y a une image qui résume d'ailleurs très bien ce qu'est le développement web ici, et qui n'est pas tant exagérée qu'on pourrait le penser :
http://humor.beecy.net/geeks/web-design/
Pour revenir à nos moutons :
1/ ExtJS supporte plein de widgets, oui ça c'est vrai.
2/ Il y a vraiment des composants tout faits pour tout en ExtJS.
Mais :
1/ La maintenance d'une appli en Ext est très compliquée, ne serait-ce que parce que faire un layout avec une page HTML qu'on intègre dans une fenêtre, c'est toujours plus simple que de le coder en Ext.
2/ Le nombre de mauvaises surprise est assez énorme avec Ext, surtout quand on doit faire des tests sur différents navigateurs.
- Essaie en particulier les forms qui contiennent des tab panels, et tu verras que tu as le choix entre soit avoir un rendu foireux sur les combobox et les grid panels, soit submitter des forms partiels avec des valeurs manquantes parce que les widgets n'ont pas été générés correctement.
- De même, avec Ext3 ils ont changé les types supportés par les records sans les documenter. (type='boolean' est passé en type='bool' alors que la doc affiche toujours type='boolean'...)
- De même, en Ext3 si tu oublies le paramètre forceLayout=true sur un widget bonjour les surprises.
- Si tu oublies de mettre un hideMode à 'offsets' sur un panel qui a un cardlayout au bout d'un moment, en switchant entre tes panels les boutons ne deviennent plus cliquables.
- Les fuites mémoire des navigateurs.
- Essaie de limiter le nombre de requêtes Ajax simultanées que tu peux lancer depuis un site codé en Ext, tu vas bien t'amuser. (Oui les record et les store c'est très séduisant à première vue, mais si tu as un besoin spécifique qui n'est pas couvert par ces records et stores tu galères un max...)
- Et la liste est longue.
Par contre, JQuery est beaucoup plus simple, il y a des plugins de qualité assez variable mais la lib de base reste très simple et très stable, globalement. Tu as une bien meilleure maîtrise du code HTML généré si tu utilises des fenêtres étant donné que c'est toi qui l'écris et que les workarounds des différents navigateurs sont plus faciles à intégrer de ce fait.
Il faut implémenter des workarounds avec JQuery si tu utilises les applets Java sous IE (encore lui...), mais dans l'ensemble on a assez peu de mauvaises surprise.
Bref, oui ExtJS est très séduisant. Mais quand on creuse un peu, on se rend compte que c'est très difficile de stabiliser une appli en ExtJS. Il n'y a qu'a voir Yahoo Mail nouvelle version, certes ça claque mais c'est très lourd et franchement pas stable, et ça utilise YahooUI, qui est à peu de choses près la même chose qu'ExtJS. Le problème conceptuel d'Ext est qu'ils ont essayé de faire de JS un langage objet, alors que justement ce n'en est pas un.
JQuery est bien plus basique, mais en fait on maîtrise beaucoup plus ce qu'on fait. Par exemple sur le projet sur lequel j'ai bossé on a centralisé tous les appels Ajax dans un "objet" Javascript. Bien moins de problèmes de fuites mémoire, et le framework est orienté prototype comme Javascript donc en fait ça marche mieux.
JQuery a le gros avantage d'intégrer le principe KISS (Keep It SImple Stupid) que Ext semblent avoir oublié.
Donc à choisir entre les deux, je choisirais nettement JQuery.
"-".