J'ai un projet ASP.NET MVC 4 et je suis bloqué sur une décision architecturale sur le framework ou la bibliothèque JavaScript à utiliser Angular.js ou Knock.js. Je suis actuellement enclin à utiliser Angular.js au lieu de Knockout.js, mais je ne veux pas savoir à mi-chemin pendant le développement du projet que j'ai commis une erreur.
Voici quelques informations:
J'ai lu l'excellente réponse ici et regardé l'interview de Scott Allen à propos de Angular ici
Étant donné que nous ne sommes pas en mesure de changer d’architecture ASP.NET MVC 4 actuelle pour utiliser quelque chose du côté serveur, tel que l’API Web, j’ai quelques préoccupations en essayant de mettre en œuvre Angular.js avec MVC 4. nous avons deux modèles un sur le serveur et un sur le client?
Je ne cherche pas une discussion "Quel est le meilleur" à propos de Angular et Knockout, car je pense qu’ils ont tous les deux le pour et le contre. Je recherche le code réel sur la mise en oeuvre d’un framework JavaScript ou d’une bibliothèque dans une application ASP.NET MVC 4. Il me faut une solution avec laquelle je puisse vivre avec 2 ans ou plus :)
Des idées ou des suggestions? Peut-être que la réponse n’est pas Knock ou Angular, mais un autre framework JavaScript?
Heureux de voir que ces questions intéressaient la communauté;) Juste pour compléter, voici ce que j'ai fini par faire:
Je suis allé avec AngularJS et ASP.NET MVC 4 et j'étais heureux de l'avoir fait. Bien que, Angular a une courbe d'apprentissage abrupte, mais cela en vaut la peine en raison du pouvoir des directives.
mes 2 cents vaut.
préambule - J'ai travaillé avec angular et KO. Je suis sur mon 3ème front non trivial construit avec une lib MVVM/MVC.
J'ai commencé avec knockout parce que son MVVM est très similaire à la mécanique wpf/silverlight. Et ça marche bien. Les tutoriels et la documentation sont de premier ordre. Tous vos codeurs pourront travailler avec knockout.js en quelques jours ou s’ils ont utilisé mvvm sous .net, puis en quelques heures.
Cependant, ces jours-ci, j'utilise angular et je vais probablement m'en tenir à cela pour les raisons suivantes.
angular est un cadre complet - knock-out concerne en réalité la liaison à double sens. vous avez toujours besoin d'autres bibliothèques telles que backbone.js/jquery pour faire le reste de votre travail.
angulaire a injection de dépendance. ce qui est parfait pour ajouter
se moquant des tests et structurant votre code.
angular traite les variables JS normales en tant qu'observables dans son objet $ scope. cela signifie que vous n'avez pas à les déclarer d'une manière spéciale
Je ne suis pas un angular fanboy, je pense toujours qu'ils pourraient passer davantage à l'architecture MVVM au lieu de l'architecture hybride "funky" MVVM/MVC qu'ils ont actuellement.
Le plus gros problème avec angular est la documentation. Comparé à KO, c'est lamentable. Il faudra plus de temps et d’argent pour mettre vos codeurs à niveau. Une fois qu’ils sont là cependant, c’est actuellement le meilleur choix à mon humble avis.
Je n'ai pas beaucoup d'informations sur AngularJs, mais je souhaite donner quelques réflexions sur Knockout.
Knockout est principalement une bibliothèque de liaison de données permettant de connecter des vues pour voir un modèle, mais ne fournit pas beaucoup de fonctionnalités au-delà. Je ne recommanderais pas d'utiliser uniquement Knockout comme bibliothèque principale pour créer un site Web complexe basé sur le client.
Vous n'avez pas indiqué si vous implémentiez une fonctionnalité de type spa (navigation avec balises de hachage, par exemple) ou si vous utilisiez principalement des vues côté serveur MVC (par exemple, Razor). Si vous recherchez simplement une liaison de données rapide au niveau de chaque page, je le reconsidérerais même. Pour moi, les deux (angulaires ou knock-out) sont conçus pour améliorer l'expérience de développement côté client - pas tellement une approche côté serveur telle que MVC.
Si vous envisagez une approche SPA, même partiellement, vous souhaiterez probablement un cadre offrant un certain niveau de contrôle sur le cycle de vie de l'activation de la vue.
En ce qui concerne la puissance de liaison des données et la fiabilité, je crois en Knockout. Je l'utilise beaucoup et je l'aimais beaucoup. Si vous aimez la sensation de knock-out, vous voudrez peut-être examiner Durandal . Durandal est un cadre décent capable de répondre aux besoins de nombreux projets web "spa". C'est un framework côté client construit sur plusieurs bibliothèques éprouvées, y compris Knockout. C'est un peu (beaucoup) plus léger que Angular, et peut-être plus facile à utiliser.
Nous construisons un site Web assez volumineux ASP.Net MVC en utilisant Durandal avec Knockout conjointement avec une façade supplémentaire afin de resserrer les liens du point de vue du développement, et l’intégration avec ASP.Net MVC est simple. Je ne recommande pas d'essayer d'utiliser les ressources de désactivation côté serveur qui sont disponibles; Je trouve juste que limiter le pouvoir réel du modèle MVVM.