web-dev-qa-db-fra.com

Google AngularJS Framework - Le risque en peine?

On m'a demandé de créer une petite application Web pour l'un de nos clients et je pense que cela pourrait être une bonne occasion d'essayer un cadre différent pour la création d'applications Web. La plupart des applications que nous construisons sont basées sur des formulaires Web asp.net et nous n’avons encore rien fait dans une architecture MVC, mais j’ai hâte de commencer à construire des applications Web de manière plus structurée avec les bons outils.

J'ai effectué des recherches sur des projets tels que asp.net MVC et autres produits similaires, mais je me demande s'il y a quelque chose à dire sur l'utilisation du Google AngularJS Framework.

Si possible, j'aimerais quand même pouvoir écrire mon code côté serveur en utilisant c # et je n'ai pas suffisamment cherché à AngularJS pour savoir si cela est même possible, même si je suppose que je pourrais utiliser des services Web. 

Quelqu'un a-t-il déjà développé une application avec AngularJS et, dans l'affirmative, comment cela s'est-il passé et pouvez-vous m'indiquer la bonne direction pour certains tutoriels?

65
TGuimond

Nous développons depuis quelques mois une application Swing Fat client pour Swing dans les ports de base et je pense que cela vaut la peine de le recommander. En ce qui concerne les ressources d’apprentissage, consultez le site officiel du projet (et assurez-vous de lire le tutoriel) et la liste de diffusion (les auteurs sont très utiles).

Les bonnes choses: 

  • grande testabilité
  • la liaison de données bidirectionnelle est une fonctionnalité très puissante, et elle peut être extrêmement utile une fois que vous "l'obtenez"
  • OMI les modèles AngularJS sont beaucoup moins fragiles que d'utiliser des attributs de données ou des classes CSS "spéciales" pour marquer les éléments qui font quelque chose
  • cela réduit considérablement le besoin d'utiliser des plugins jquery, car implémenter cette fonctionnalité dans AngularJS est très facile (des choses comme des arbres, des onglets, des accordéons, etc.)

Les mauvaises choses:

  • la courbe d'apprentissage semble assez raide (je n'ai pas eu beaucoup de problème, mais j'ai vu des gens en souffrir)
  • les validations dans AngularJS sont nulles pour le moment (une nouvelle implémentation est en cours)
  • toutes les bibliothèques/plug-ins jquery ne fonctionnent pas bien avec Angular et vous devez généralement les envelopper
  • l'API est toujours en cours de polissage, alors attendez-vous à des changements radicaux (ce n'est pas un gros problème avec des versions fréquentes et un très bon journal des modifications)
  • les performances sont acceptables jusqu'à plusieurs milliers de liaisons sur une page - la plupart du temps, il ne s'agit pas d'une limitation, mais il peut arriver que cela pose problème.

Quelques indications (si jamais vous décidez d'apprendre AngularJS):

  • certaines personnes abusent vraiment des widgets. D'après mon expérience, il est bien préférable d'utiliser des "services partiels" HTML et de n'utiliser que des widgets de façon sporadique.
  • lire le code source de la bibliothèque - c'est le meilleur endroit pour apprendre des choses sur Angular
  • pas de manipulation DOM dans les services/contrôleurs
  • si vous utilisez des classes css pour lier des événements, vous le faites mal
104
psyho

+1 @ réponse de psycho

AngularJS est un framework côté client, vous pouvez donc utiliser n’importe quel langage sur le serveur. Il est conçu pour fonctionner correctement avec jQuery, en mettant l'accent sur les tests ...

Voici quelques ressources qui pourraient vous être utiles:

Quelques exemples d'applications:

Adaptateur pour SenchaTouch: https://github.com/tigbro/sencha-touch-angular-adapter

Adaptateur pour jQ Mobile: https://github.com/tigbro/jquery-mobile-angular-adapter

N'hésitez pas à poser n'importe quelle question sur mailing list !

Nous sommes toujours en version bêta, mais il existe déjà plusieurs applications internes chez Google, optimisées par AngularJS .


UPDATE (26 juillet 2012): _

AngularJS v1.0 a été publié.

Pour certaines applications publiques alimentées par AngularJS, consultez http://builtwith.angularjs.org

26
Vojta

IMHO développer quelque chose pour un client qu'il pourrait avoir du mal à supporter n'est pas professionnel. N'oubliez pas qu'il sera difficile pour votre client d'engager des professionnels angulaires expérimentés ou de former leur propre personnel à franchir cette "courbe d'apprentissage abrupte". En outre, jusqu'à présent, la documentation n'est pas très bonne. Pouvez-vous facilement, dans quelques instants, répondre à la question "Comment puis-je connecter ma brillante application Angular à la base de données de mon client?" Votre client pourra-t-il ultérieurement, à l’avenir, saisir facilement du code existant et l’adapter à ses besoins futurs éventuels? Être honnête.

Comparez le bon vieux développement de LAMP fiable à Angular. Pour une "petite application Web", je crois vraiment qu'un professionnel devrait donner à son client quelque chose de simple et facile à gérer.

Cela ne veut pas dire qu'Annular n'est ni cool, ni sexy, etc. Mais vous avez la facilité de maintenance future de votre cliente à laquelle réfléchir en plus de la dernière lubie du framework. Marcher légèrement serait ma recommandation. Créez d'abord votre propre site Web avec Angular et voyez ce que vous en pensez avant de confier vos fabuleuses nouvelles compétences à un client digne de confiance.

20
noogrub

Je me souviens avoir lu ce fil de discussion SO il y a quelques mois, avec la même question dans mon esprit, et nous avons décidé d'aller de l'avant avec AngularJS et la meilleure décision que nous ayons prise à propos de ce projet.

Nous utilisons AngularJS + ASP.NET MVC4 REST WebAPI.

Probablement après un tel framework MVC Javascript Javascript côté client, vous n’auriez besoin que de la couche API REST interagissant avec la couche logique logicielle du côté serveur, et pas de MVC côté serveur (ASP.NET MVC/Spring/Structs donnerait l’impression suivante: vieux souvenirs).

Vous trouverez un bon add-on sur l'interface utilisateur angulaire (en particulier sur la grille).

Peu de temps après la fin de notre projet, nous pourrions mettre en œuvre certaines des directives que nous avons écrites pour le monde open source.

11
Sutikshan Dubey

Je fais des recherches sur les avantages d’AngularJS depuis de nombreux mois, à utiliser comme cadre principal du produit que je crée. Il existe de nombreux aspects de la SJA qui en valent la peine d'apprendre. Oui, il y a un peu de courbe d'apprentissage mais cela en vaut la peine, surtout si vous souhaitez avoir plus de contrôle sur les capacités du côté client. 

JQuery manipule le DOM au moment de l'exécution, alors qu'AJS se situe dans le cycle de vie du rendu JS. Cela vous permet d'enseigner de nouvelles astuces au DOM en créant vos éléments et attributs HTML. C'est très, très puissant. En tant que ce que vous êtes capable de faire est d’introduire de nouveaux comportements d’élément, quels que soient vos objectifs et vos besoins. Dans AJS, ces attributs/éléments HTML personnalisés sont appelés des directives. Grâce à la possibilité d'élaborer vos propres directives, vous pouvez créer des fonctionnalités que le code HTML actuel ne possède pas, étendant les fonctionnalités qui s'exécuteront sur tous les navigateurs modernes, maintenant et dans le futur. Parmi les nombreuses approches pour induire un nouveau comportement, la SJA semble être la direction la plus sûre que l'on puisse prendre en raison de la manière dont ils ont choisi de la mettre en œuvre. 

JQuery offre un gain de performance considérable par rapport à JDS. 

J'adore la simplicité de la liaison de données bidirectionnelle et la séparation des préoccupations dans leur modèle MVC côté client, qui, comme indiqué ci-dessus, offre une grande testabilité. L'objet de portée est le lien entre la vue (HTML), le modèle (vos données) et vos contrôleurs personnalisés. La portée fournit un accès aux attributs parent et peut être isolée au niveau de la fratrie, ce qui est important pour certains modèles réutilisables.

Les modèles peuvent être créés et réutilisés dans votre application, ce qui peut contenir 0 directive personnalisée ou plus.

J'utilise des frameworks tels que PRISM et MEF, mais je constate qu'AJS possède la plupart des fonctionnalités qui existent dans ces frameworks .NET, mais dans une empreinte de 29 Ko. Il y a des rumeurs selon lesquelles ils travaillent sur le chargement paresseux qui, s'ils sont fournis, fourniront des fonctionnalités très intéressantes de type LOB. 

Un certain nombre de structures d’interface utilisateur sont en cours de construction pour AJS, mais vous pouvez encapsuler toute bibliothèque de contrôle tierce au besoin, moyennant quelques efforts. L'astuce consiste à s'assurer que, lorsque ces contrôles tiers ont des modifications induites, vous vous assurez que AJS est correctement informé en utilisant leur méthode apply. 

Si vous combinez AJS avec MS TypeScript dans VS 2012, vous avez ainsi la possibilité de gérer et de construire des projets très impressionnants qui conviendront parfaitement à ceux qui sont plus à l'aise avec les projets de VS. 

Il existe une tonne d'autres raisons de regarder la SJA, mais si vous envisagez des structures telles que KnockOut, je vous recommande fortement la SJA, quelle que soit sa courbe d'apprentissage. Knockout est une bibliothèque, AJS est un framework.

11
user1333524

Jusqu'à présent, je pense que Google Angular est génial. Particulier comme la liaison de données et l'injection de dépendance.

Pour les autres frameworks js, il y a knockout.js, backbone.js etc . Voici quelques articles: angular.js par exemple dans backbone.js et/ou knockout.js

8
Eric_Guo

Je me rends compte que cet article est vieux et que vous n’êtes pas parti avec Angular, mais j’ai un passé similaire à vous et j’en suis au même point que vous lorsque vous posez la question. 

Donc, pour le bénéfice des futurs visiteurs, quelques-uns des "risques" et des liens vers des ressources que j'ai trouvées utiles ...

  • Comme beaucoup l'ont déjà mentionné, Angular peut avoir une courbe d'apprentissage très abrupte "Non seulement moi, mais des collègues que je considère comme des développeurs très intelligents ont eu du mal à comprendre certains concepts de base" AngularJS est incroyable ... et difficile à hell (le lien a aussi quelques bons tutoriels que vous avez demandés), et le truc de la version 2 est ressemble plus à Java , ce qui n'aurait pas été un problème avec votre arrière-plan C #, à mon avis, les directives sont assez difficile à comprendre sans annotations verbeuses et ainsi de suite.
  • Les performances angulaires peuvent être médiocres dans certains cas, en particulier lorsque vous utilisez ng-repeat sur un grand nombre d’éléments Prise en compte de la vitesse et de la lenteur dans AngularJS et l’expérience de Scaylr . D'autres ont mentionné que les performances se dégradent en réalité sur plus de 2 000 éléments liés, mais il est généralement mal vu que toute application comportant plus que de nombreux éléments n'est probablement pas une bonne application. Gardez cela à l'esprit si vous avez des cas d'utilisation légitimes qui font appel à de nombreux objets liés.
  • Angular est populaire en termes de contributeurs , mais se classe loin derrière, disons, jQuery en termes de utilisation de la production . Trouver des développeurs angulaires peut être difficile, et jQuery ou d’autres développeurs qui convertissent doivent faire face à une "courbe d’apprentissage abrupte". 
  • Comme Angular est jeune, vous n’avez aucune garantie qu’il aura suffisamment d’attrait pour que vos nouvelles compétences en Angular soient utilisables et que votre nouvelle application ne deviendra pas rapidement du code hérité.
  • Dans v1.2, Angular ne prend pas en charge IE7 et les versions antérieures et v1.3 abandonnera IE8 . Pour> = IE9, vous devez suivre certaines pratiques de codage spéciales .
  • Les nombreux widgets, plug-ins et bibliothèques javascript que vous êtes peut-être habitués à utiliser ne peuvent pas être utilisés correctement avec Angular sans une modification importante, et il est souvent suggéré de réécrire votre composant dans Angular .
  • MISE À JOUR Mars 2014: après 2 mois d’essais pour créer une application d’une page densément fonctionnelle et non triviale: Angular existe en de nombreuses versions et il est difficile de dire laquelle est la meilleure ou la plus stable. Cela dépendra de ce que vous codez avec. Je trouve des bugs angulaires qui sont corrigés en passant à une version ultérieure et d'autres en régressant. Je n'ai jamais eu à faire du shopping de version comme celui-ci avec jQuery.
  • MISE À JOUR Mai 2014: Jeunes outils cassés. Batarang est génial jusqu’à ce que ne fonctionne pas . Je ne peux pas y croire jusqu'à ce qu'ils résolvent celui-ci.

Et enfin, les trois meilleures ressources que j'ai trouvées pour apprendre ce genre de choses

7
poshest

Je voudrais dire oui à cela et vérifier la mise en œuvre de la { hottowel de John Papa } _. 

0
Warren LaFrance