it-swarm.com.de

Google AngularJS Framework - das Risiko wert?

Ich wurde gebeten, eine kleine Webanwendung für einen unserer Kunden zu erstellen, und denke, es wäre eine gute Gelegenheit, ein anderes Framework zum Erstellen von Webanwendungen auszuprobieren. Die meisten Anwendungen, die wir erstellen, basieren auf asp.net-Webformularen, und wir haben bisher noch nichts in einer MVC-Architektur getan. Ich bin jedoch bestrebt, Webanwendungen strukturierter mit den richtigen Tools zu erstellen.

Ich habe Dinge wie asp.net MVC und ähnliche Dinge recherchiert, die ziemlich gut aussehen, aber ich frage mich, ob es etwas zu sagen gibt, wenn man so etwas wie das Google AngularJS Framework verwendet.

Wenn möglich, würde ich trotzdem gerne in der Lage sein, meinen serverseitigen Code mit c # zu schreiben, und ich habe AngularJS nicht genug recherchiert, um zu wissen, ob dies überhaupt möglich ist, obwohl ich davon ausgehe, dass ich Webservices verwenden könnte. 

Hat jemand Erfahrung mit der Entwicklung einer App mit AngularJS und wenn ja, wie war es und können Sie mir bei einigen Tutorials die richtige Richtung weisen?

65
TGuimond

Wir haben in den letzten Monaten einen Port für eine Swing-Fat-Client-Anwendung in AngularJS entwickelt, und ich denke, es ist eine Empfehlung wert. Was Lernressourcen angeht, besuchen Sie die offizielle Projektseite (und lesen Sie unbedingt das Tutorial) und die Mailingliste (die Autoren sind sehr hilfreich).

Das gute Zeug: 

  • gute Testbarkeit
  • die bidirektionale Datenbindung ist eine sehr leistungsfähige Funktion und kann sehr hilfreich sein, wenn Sie sie "bekommen".
  • IMO die AngularJS-Vorlagen sind viel weniger spröde als die Verwendung von Datenattributen oder "speziellen" CSS-Klassen zum Markieren von Elementen, die etwas bewirken
  • es reduziert die Verwendung von Jquery-Plugins erheblich, da die Implementierung dieser Funktionalität in AngularJS sehr einfach ist (z. B. Bäume, Tabs, Akkordeons usw.).

Das schlechte Zeug:

  • die Lernkurve scheint ziemlich steil zu sein (ich hatte kein großes Problem, aber ich habe gesehen, dass einige Leute damit zu kämpfen haben)
  • validierungen in AngularJS saugen vorerst (eine neue Implementierung ist unterwegs)
  • nicht alle Bibliotheken/Jquery-Plugins spielen gut mit Angular und normalerweise müssen Sie sie einpacken
  • die API wird immer noch poliert. Erwarten Sie also brechende Änderungen (kein großes Problem bei häufigen Releases und sehr guter Änderungsprotokollwert).
  • die Leistung ist bis zu mehreren tausend Bindungen auf einer Seite in Ordnung - die meiste Zeit ist dies keine Einschränkung, aber es gibt Fälle, in denen dies ein Problem darstellen könnte.

Einige Hinweise (falls Sie sich jemals dazu entschließen, AngularJS zu lernen):

  • einige Leute überfordern Widgets wirklich. Meiner Erfahrung nach ist es viel besser, HTML-Partials + -Dienste und nur sporadisch Widgets zu verwenden.
  • lesen Sie den Quellcode der Bibliothek - es ist der beste Ort, um sich mit dem Thema Winkel vertraut zu machen
  • keine DOM-Manipulation in Services/Controllern
  • wenn Sie css-Klassen verwenden, um an Ereignisse zu binden, machen Sie es falsch
104
psyho

+1 @ Psychos Antwort

AngularJS ist ein clientseitiges Framework, sodass Sie jede Sprache auf dem Server verwenden können. Es ist so konzipiert, dass es gut mit jQuery zusammenarbeitet, wobei der Schwerpunkt auf Tests liegt ...

Hier finden Sie einige nützliche Ressourcen:

Einige Beispiel-Apps:

Adapter für SenchaTouch: https://github.com/tigbro/sencha-touch-angular-adapter

Adapter für jQ Mobile: https://github.com/tigbro/jquery-mobile-angular-adapter

Fühlen Sie sich frei, Fragen zu Mailingliste zu stellen!

Wir befinden uns noch in der Beta-Phase, aber es gibt bereits mehrere interne Apps bei Google, die von AngularJS unterstützt werden.


UPDATE (26. Juli 2012):

AngularJS v1.0 wurde veröffentlicht.

Für einige öffentliche AngularJS-basierte Apps besuchen Sie http://builtwith.angularjs.org

26
Vojta

IMHO etwas für einen Kunden zu entwickeln, für das sie möglicherweise Schwierigkeiten haben, ist unprofessionell. Sie müssen bedenken, dass es für Ihren Kunden schwierig sein wird, erfahrene Angular-Profis einzustellen oder ihre eigenen Mitarbeiter darin zu trainieren, diese "steile Lernkurve" zu erklimmen. Bisher ist die Dokumentation auch nicht so toll. Können Sie die Frage "Wie kann ich meine glänzende Angular-App mit der Datenbank meines Kunden verbinden?" In wenigen Augenblicken beantworten. Kann Ihr Kunde irgendwann leicht vorhandenen Code nutzen und ihn an seine zukünftigen Anforderungen anpassen? Sei ehrlich.

Vergleichen Sie einfache, zuverlässige LAMP-Entwicklung mit Angular. Für eine "kleine Webanwendung" glaube ich wirklich, dass ein Fachmann seinem Kunden etwas Wartungsfreundliches und Einfaches geben sollte.

Es ist nicht zu sagen, dass Angular nicht cool und sexy usw. ist. Aber Sie haben die zukünftige Wartbarkeit Ihres Kunden zusätzlich zum neuesten Framework-Fad. Leichter Schritt wäre meine Empfehlung. Erstellen Sie zuerst Ihre eigene Website mit Angular und sehen Sie, was Sie denken, bevor Sie einigen vertrauensvollen Kunden Ihre fabelhaften neuen Fähigkeiten verleihen.

20
noogrub

Ich erinnere mich, wie ich diesen SO Thread vor ein paar Monaten mit derselben Frage im Kopf gelesen habe, und wir beschlossen, mit AngularJS fortzufahren, und die beste Entscheidung, die wir bisher für dieses Projekt getroffen haben.

Wir verwenden AngularJS + ASP.NET MVC4 REST WebAPI.

Nach einem solchen Nice-Client-MVC-Framework von Nice würden Sie nur REST eine API-Schicht benötigen, die auf der Serverseite mit Business Logic Layer interagiert, und auf der Serverseite kein MVC (ASP.NET MVC/Spring/Structs) fühle mich wie alte Erinnerungen).

Sie finden das Angular-UI als gutes Add-On (insbesondere für das Raster).

Bald nach Abschluss unseres Projekts könnten wir einige unserer Richtlinien für Open Source World veröffentlichen.

11
Sutikshan Dubey

Ich habe die Vorteile von AngularJS seit vielen Monaten erforscht, um sie als Kernrahmen für ein Produkt zu verwenden, das ich schaffe. Es gibt viele Aspekte von AJS, die das Lernen lohnenswert machen. Ja, es gibt eine gewisse Lernkurve, aber es lohnt sich, vor allem, wenn Sie mehr Kontrolle über die clientseitigen Fähigkeiten wünschen. 

JQuery manipuliert das DOM zur Laufzeit, während sich AJS innerhalb des JS-Rendering-Lebenszyklus befindet. Auf diese Weise können Sie dem DOM neue Tricks beibringen, indem Sie Ihre HTML-Elemente und -Attribute erstellen. Das ist sehr, sehr mächtig. Was Sie tun können, ist die Einführung neuer Element-Verhaltensweisen für jeden Zweck und Bedarf. In AJS werden diese benutzerdefinierten HTML-Attribute/Elemente als Direktiven bezeichnet. Mit der Möglichkeit, eigene Direktiven zu erstellen, können Sie Funktionen erstellen, die im aktuellen HTML-Code nicht vorhanden sind, und Funktionen ausweiten, die in allen modernen Browsern jetzt und in Zukunft funktionieren werden. Von den vielen Ansätzen zur Herbeiführung eines neuen Verhaltens scheint AJS die sicherste Richtung zu sein, die man aufgrund der Art und Weise, wie sie sich für die Umsetzung entschieden haben, einschlagen kann. 

Im Vergleich zu JQuery in AJS gibt es einen großen Leistungszuwachs. 

Ich liebe die Einfachheit der bidirektionalen Datenbindung und die Trennung der Bedenken in ihrem clientseitigen MVC-Muster, die, wie oben erwähnt, eine große Testbarkeit bieten. Das Bereichsobjekt ist die Verbindung zwischen der Ansicht (HTML), dem Modell (Ihren Daten) und Ihren benutzerdefinierten Controllern. Der Bereich bietet Zugriff auf übergeordnete Attribute und kann auf der Ebene der Geschwister isoliert werden, was für einige wiederverwendbare Vorlagen wichtig ist.

Vorlagen können in Ihrer Anwendung erstellt und wiederverwendet werden, die 0 oder mehr benutzerdefinierte Anweisungen enthalten kann.

Ich habe Frameworks wie PRISM und MEF verwendet, aber ich habe festgestellt, dass AJS die meisten der gleichen Features aufweist, die in diesen .NET-Frameworks vorhanden sind, aber in einem 29K-Footprint. Es gibt Gerüchte, dass sie an Lazy-Loading arbeiten, was, falls vorgesehen, einige sehr interessante LOB-Fähigkeiten bietet. 

Es gibt eine Reihe von UI-Frameworks, die für AJS entwickelt werden, aber Sie können bei Bedarf alle Steuerungs-Libs von Drittanbietern einpacken. Der Trick besteht darin, sicherzustellen, dass Änderungen an diesen Kontrollen durch Dritte vorgenommen werden und dass AJS ordnungsgemäß mithilfe der Apply-Methode benachrichtigt wird. 

Wenn Sie AJS mit MS TypeScript in VS 2012 kombinieren, können Sie einige beeindruckende Projekte verwalten und erstellen, die für diejenigen geeignet sind, die mit Projekten in VS besser vertraut sind. 

Es gibt viele andere Gründe, sich AJS anzuschauen, aber wenn Sie über Rahmenbedingungen wie KnockOut nachdenken, würde ich stattdessen AJS wärmstens empfehlen, unabhängig von seiner wahrgenommenen Lernkurve. Knockout ist eine Bibliothek, AJS ist ein Framework.

11
user1333524

Bislang finde ich Angular von Google großartig. Besonders wie die Datenbindung und Abhängigkeitsinjektion.

Für andere js-Frameworks gibt es knockout.js, backbone.js usw. Hier sind einige Beiträge: angle.js Beispiel in backbone.js und/oder knockout.js

8
Eric_Guo

Ich weiß, dass dieser Beitrag alt ist und Sie nicht mit Angular gegangen sind, aber ich habe einen ähnlichen Hintergrund wie Sie und bin an der gleichen Stelle wie Sie, wenn Sie die Frage stellen. 

Zum Nutzen zukünftiger Besucher haben sich einige der "Risiken" und Links zu Ressourcen als nützlich herausgestellt ...

  • Wie viele bereits erwähnt haben, kann Angular eine sehr steile Lernkurve haben. "Nicht nur ich, sondern Kollegen, die ich für sehr intelligente Entwickler halte, haben mit einigen grundlegenden Konzepten zu kämpfen." AngularJS ist erstaunlich ... und hart.) zum Teufel (Link hat auch einige gute Tutorial-Links, nach denen Sie gefragt haben), und das Zeug der Version 2 ist sieht eher wie Java aus , was mit Ihrem C # -Hintergrund kein Problem gewesen wäre Meiner Meinung nach sind Richtlinien schwer zu verstehen, ohne ausführliche Anmerkungen und so weiter.
  • Die Winkelleistung kann in einigen Fällen schlecht sein, insbesondere wenn ng-repeat für eine große Anzahl von Elementen verwendet wird Berücksichtigung von Geschwindigkeit und Langsamkeit in AngularJS und Scaylrs Erfahrung . Andere haben erwähnt, dass die Performance von mehr als 2000 gebundenen Elementen tatsächlich beeinträchtigt wird, aber das stößt normalerweise auf Argumente darüber, dass eine App mit mehr als vielen Elementen wahrscheinlich keine gute App ist. Denken Sie jedoch daran, wenn Sie legitime Anwendungsfälle haben, für die viele gebundene Objekte erforderlich sind.
  • Angular ist populär in Bezug auf Mitwirkende , rangiert jedoch weit jenseits von jQuery in Bezug auf Produktionsverwendung . Die Suche nach Angular-Entwicklern könnte schwierig sein, und jQuery oder andere Entwickler, die konvertieren, haben diese "steile Lernkurve" zu bewältigen. 
  • Da Angular noch jung ist, können Sie nicht garantieren, dass die neuen Angular-Fähigkeiten ausreichend genutzt werden können, um einsetzbar zu sein, und dass Ihre neue Anwendung nicht schnell zu altem Code wird
  • In v1.2 unterstützt Angular nicht IE7 und darunter und v1.3 löscht IE8 . Für> = IE9 müssen Sie einige spezielle Codierverfahren beachten.
  • Die vielen Javascript-Widgets, Plugins und Bibliotheken, die Sie möglicherweise verwenden, können mit Angular nicht ohne große Modifikationen ordnungsgemäß verwendet werden, und die Benutzer schlagen häufig vor, Ihre Komponente in Angular ohnehin neu schreiben .
  • UPDATE März 2014: Nach zwei Monaten versuchte man, eine nicht-triviale, dicht funktionale One-Page-App zu erstellen: Es gibt viele Versionen von Angular, und es ist schwer zu sagen, welche die beste oder stabilste ist. Es hängt davon ab, was Sie damit programmieren. Ich finde einige Fehler Angular, die durch ein Upgrade auf eine neuere Version behoben wurden, und andere, die durch ein Zurückgehen auf eine frühere Version behoben wurden. Mit jQuery musste ich noch nie auf die Version gehen.
  • UPDATE Mai 2014: Junge, kaputte Werkzeuge. Batarang ist großartig, bis es funktioniert nicht . Ich kann es nicht trauen, bis sie das Problem behoben haben.

Und schließlich die drei besten Ressourcen, die ich für das Lernen dieser Sachen gefunden habe

7
poshest

Ich würde ja dazu sagen und checke John Papas Fluch Implementierung als eine Möglichkeit dazu. 

0
Warren LaFrance