Il ya tellement de choses dans votre question, que la réponse ne sera pas facile et ne sera pas définitive. Il sera aussi beaucoup d'opinions. En regardant la liste de cadre que vous avez apporté, je vois des choses très différentes qui sont difficilement comparables les uns avec les autres. Je vais essayer de les regrouper en quelque sorte, et ajouter plus de cadres à la liste.
La question principale ici est de ne pas les avantages et les inconvénients d'un cadre particulier. La principale question est: combien voulez-vous? Avez-vous vraiment dire, une application comme Gmail ou Grooveshark? Ou avez-vous dire quelque chose comme Stackoverflow - une dynamique et pas du tout simple, mais encore un site web. Nous allons tenir compte de toutes ces options.
Peut-être vous voulez simplement améliorer votre site web avec quelques widgets, comme les onglets, les dialogues, certains déplaçable/drop éléments, l'édition de texte, etc, et vous n'êtes pas prêt à changer votre modèle de développement. Je veux dire, vous utilisez vos favoris Java/PHP/Ruby et ne souhaitent pas écrire beaucoup de votre application logiques et comportements en JavaScript. Dans ce cas, jQuery-plugin basé sur solutions peut faire pour vous, en particulier, jQuery UI et jQuery Mobile.
jQuery widgets suivre son système de plugin. Cela signifie généralement qu'ils sont extrêmement faciles à utiliser. Pour créer un bouton, vous écrivez:
$('#myButton').button();
Maintenant, si vous voulez la désactiver, vous appelez une méthode utilisant le modèle suivant:
$('#myButton').button('disable');
Et l'obtention ou les valeurs de réglage, par exemple sur le curseur ou le datepicker, ressemble à ceci:
$('#mySlider').slider('value');
$('#mySlider').slider('value', 42);
Comme vous le voyez, jQuery-fondé des solutions ont pas de modèle. Toutes vos données sont conservées dans les DOM et est obtenu par l'intermédiaire d'excentrique appels de méthode. Si vous avez besoin de dynamicly traitement de vos données, par exemple faire quelques complexes validations, charger quelque chose en arrière-plan, de filtre ou de tri, alors vous voyez que ce sera bientôt déraper. Par ailleurs, c'est le problème, pourquoi jQuery UI n'a pas fourni une grille de contrôle de la encore ils ne peuvent pas le faire sans modèle. En jQuery Mobile, vous obtenez un joli mobile de l'INTERFACE utilisateur par le biais de balisage simple, mais il n'y a pas de manière officielle pour transmettre les données entre les pages.
Résumant cette place: si vous avez un multi-page site web, si vous publiez vos formulaires, puis utiliser jQuery UI ou un briquet solution comme Twitter Bootstrap.
Peut-être, vous voulez construire quelque chose de plus complexe, de plus en plus de demande (une seule page de l'application?). Vous savez que vous aurez besoin de travailler avec des données côté client. Quelles sont vos options?
Vous pouvez utiliser un des nombreux frameworks JavaScript qui vous fournissent avec des modèles, la liaison de données et probablement d'autres moyens de créer des applications web et de les intégrer avec pourquoi pas de jQuery UI. Ou vous pouvez utiliser un framework complet comme le Kendo ou Wijmo ou jqWidgets. Ces cadres s'appuient sur jQuery (Wijmo s'appuie sur jQuery UI) et de fournir d'autres moyens de manipulation de données. Ils ont des modèles de données. Kendo met en œuvre sa propre solution (je pense), alors que Wijmo et jqWidgets intégrer avec le populaire knock-out JS.
Donc, Kendo et Wijmo appartiennent au groupe des cadres qui fournissent à la fois des widgets/contrôles et de l'aide du modèle. Il y a d'autres cadres de ce genre, qui ne sont pas jQuery-basé, par exemple, Dojo Toolkit. Ajouter un peu de dynamique de chargement de données et vous aurez un peu complexe de l'application web. Que pouvez-vous désirez?
En fait, la chose la plus importante est oublié - comment avez-vous de la structure (organiser) vous demande? Si vous essayez de créer une page unique application qui communique avec le serveur de repos, puis vous allez bientôt entrer dans un désordre si votre application n'a pas d'architecture. Les caractéristiques qui sont habituellement nécessaires pour cela sont d'une certaine inquiétude de séparation (MVC, MVVM), la création de modèles, de routage et de gestion du module. C'est là que SproutCore et Sencha apparaissent. Ils offrent une solution complète pour la construction d'applications web, où les widgets sont juste une petite partie.
Il peut sembler comme SproutCore et Sencha sont les gagnants ici, parce qu'ils sont des solutions les plus complètes qui incluent à la fois de l'INTERFACE utilisateur et les logiques d'entreprise et aussi la structure de votre application. Malgré tous les avantages, il ya certains inconvénients. Certains disent qu'ils sont trop lourds, ou nécessiteront d'adhérer à leur modèle de développement, ce qui vous plairait pas. Par exemple, dans le Sencha-vous décrire votre interface en JavaScript et l'utilisation Sencha du type de système. Cela ajoute une sorte de sensation de lourdeur qu'il y a des abstractions et des emballages, alors que vous aimez vraiment la facilité de HTML, CSS et JavaScript natif.
Mais ce n'est pas la seule façon. La puissance du web est qu'il y a beaucoup-beaucoup de cadres, de bibliothèques, d'outils, plus petits et plus grands, qui vous aidera à créer votre application comme vous le souhaitez. Considérons, par exemple, AngularJS. Il ne fournit pas un ensemble de contrôles de lui-même, mais combiné avec Twitter Bootstrap devient une solution complète pour la RIA. Ou, regardez, par exemple, EmberJS, un plus léger cadre du gars qui a créé le poids lourd de SproutCore. Il ne vous fournit pas avec un ensemble de widgets, mais est, à mon avis, une très bonne base pour une application.
Voici donc ma dernière pensée au lieu de conclusion. Tous ceux cadre d'habitude vous montrer leur widget, joliment les thèmes et les autres éléments visuels. Mais ce qui importe vraiment est de savoir comment vous allez réellement développer votre application, comment vous vous la structure, ce qui vous permettra de mettre en œuvre votre logique. Apprendre à connaître ce que le cadre offre et de réfléchir si vous pouvez remplacer ce qui manque.