| 

.NET C# Java Javascript Exception

7
Für mein nächstes Webapp-Projekt bin ich gerade dabei, ein MVVM-Framework auszuwählen. In die engere Wahl kommen für mich AngularJS und Durandal (das u.a. auf Knockout und RequireJS aufbaut).

Es gibt eine lange Liste von Punkten, die für Angular sprechen (die ich hier nicht alle aufführen will), aber auch einige Vorbehalte. Ich finde das Knockout-Databinding mit seinem klaren Observer-Pattern-Ansatz besser als die Variante von Angular. Außerdem funktioniert es bis hinab zum IE6, und zumindest den IE8 muß ich (leider) unterstützen. Zumindest auf die ersten Blicke scheinen mir Navigation/Routing, Verschachteln von Views und Erstellen/Einbinden eigener UI-Elemente in Durandal einfacher und/oder mächtiger gelöst zu sein. Die Doku von Durandal ist deutlich ansprechender, viele Quellen im Netz bescheinigen dem Framework eine flachere Lernkurve. Das wären Punkte, die für mich für Durandal sprechen würden, aber ich bin mir noch lange nicht sicher, ob sie schwer genug wiegen, mich gegen Angular zu entscheiden.

Habt ihr Erfahrungen mit einem der beiden Frameworks? Was hat Euch gefallen, was nicht?

Was mir ansonsten (neben dem möglichst reibungslosen IE8-Support) noch wichtig ist:

  • I18N-Support sollte sich einfach implementieren lassen
  • Das Framework sollte sich gut mit Typescript vertragen
  • Ich möchte SlickGrid verwenden, das sollte sich also gut integrieren lassen.

Freue mich auf Eure Beiträge!
javascript mvvm angular.js durandal
News:
11.10.2013
Matthias Hlawatsch 13,2k 4 9
Mich interessiert dieses Thema total, aber es schreckt mich bisher die Vielfalt der JS-Frameworks ab.
Wenn Du bei deinen Recherchen auf gute Überblicks/Vergleichsquellen stößt, teile dies doch bitte mit.
judgy 11.10.2013
Ich frage mich, ob das MVVM-Pattern, welches ja eigentlich für WPF-Anwendungen entworfen wurde, im Web-Umfeld zielführend ist. Ich würde eher zu einem MVC-Framework tendieren. Ich habe allerdings seit einigen Jahren keine Web-Projekte mehr gemacht und bin deshalb nicht auf dem aktuellen Stand.
luedi 11.10.2013
Es geht hier um eine "Single Page Application". Das UI läuft mit Javascript komplett im Browser, vom Server kommen nur Daten (REST/Json). Das ist vom Charakter her ähnlicher zu einer WPF- oder Silverlight-Anwendung als zu einer "klassischen" Webanwendung mit ASP.NET, JSF, PHP...
Knockout ist unter dem MVVM-Banner schon recht lange erfolgreich unterwegs, und Angular scheint sich von MVC Richtung MVVM entwickelt zu haben (bzw. MVW wie 'W'hatever, die sehen das Pattern-Thema recht locker, scheint mir).
Matthias Hlawatsch 11.10.2013
Wieder was gelernt :-)) Das ganze hört sich interessant an. Ich hoffe, dass ich bald mal wieder die Gelegenheit bekomme, im Web-Umfeld zu arbeiten.
luedi 12.10.2013
1 Beitrag
2
Auf der diesjährigen Basta durfte ich mich 3 Tage intensiv mit dem Thema beschäftigen. Ingo Rammer und Christian Weyer von Thinktecture bevorzugen klar AngularJS und begründen das unter anderem mit der Anzahl an Contributoren. (Knockout -> 38, AngularJS -> 424)
Weiterhin ist AngularJS wirklich sehr leicht umzusetzen und erweiterbar. Die Datenbindung benötigt z.b. keine ObservableObjects wie bei KnockoutJS.

In diesen Folien gibt es auch eine Grafik von Google Trends zu den einzelnen Frameworks. Dabei sollte man natürlich bedenken, dass AngularJS von Google stammt und die Google Trends eben auch. Aber der Unterchied zu anderen Frameworks ist schon enorm.

Letzen Endes muss man aber für sich selber entscheiden, was einem liegt und auf welches Pferd man setzt. Momentan gibt es über 60 verschiedene MV* Frameworks für Single Page Applications. Einen Überblick mit jeweils einer Todo-Anwendung gibt es auf todomvc.com. Dort kann man sich vor dem ersten Antesten einen recht guten Überblick verschaffen und eine Vorauswahl treffen.

Ich würde momentan auch auf AngularJS setzen, da die Datenbindung einfach einfach ist und mir das Framework alles bietet, was ich benötigte.
11.10.2013
Andreas Richter 1,7k 1 2 8
Dankeschön!
Den Contributoren-Vergleich finde ich unfair (und bin verwundert, dass die TT-Leute sich auf dieses Niveau begeben). KO macht nur Datenbindung (deswegen habe ich ja auch Durandal als Gegenüber aufgestellt), Angular hat darüberhinaus sein eigenes Modulsystem und sogar seine eigene jQuery-(Lite-)Implementierung (und noch viel mehr). Da müßte ich eigentlich noch die Contributoren von RequireJS und jQuery noch mit hinzuzählen.

Die Datenbindung von Knockout finde ich persönlich schöner als die von Angular, aber das ist vielleicht auch z.T. Geschmackssache.
Matthias Hlawatsch 11.10.2013
Sorry. Den Contributoren-Verlgeich habe ich verhunzt. Die absoluten Zahlen haben die TT-Leute nicht verwendet.

Neuer Versuch :)

Grundtenor war der, dass hinter Knockout nur 2 Hauptentwickler stecken, die das Projekt in ihrer Freizeit voranbringen. Was ansich nicht schlimm und in der Open Source Welt sogar sehr häufig anzutreffen ist.
Wenn man auf solch ein Framework setzt muss einem bewusst sein, dass die Hauptentwickler von heute auf morgen aufhören können. Das ist ein Aspekt der nie entreten muss, aber kann. Und das sollte man bei der Wahl des Frameworks beachten.
Andreas Richter 11.10.2013
OK, danke für die Klarstellung.
Ich hatte im Kopf, daß Knockout von Microsoft gesponsert wird. Das stimmt wohl so nicht ganz, aber immerhin beschäftigen sie mindestens einen der Hauptentwickler im ASP.NET-Team.
Andererseits: wieviele der Angular-Entwickler werden von Google bezahlt, und was passiert, wenn Google beim nächsten Spring Cleaning der Meinung ist, dass Angular das Schicksal des Google Reader teilen soll?
Da finde ich es interessant, dass die Firma hinter Durandal Support gegen Bezahlung anbietet. Wobei ich auch nicht weiß, was die machen, wenn Knockout verschwindet. Schwierig...
Matthias Hlawatsch 12.10.2013
Ich glaube, das Risiko, dass ein Framework, auf das man setzt eingestellt wird, hat man immer. Egal, ob Open oder Closed Source. Siehe Silverlight.

Deswegen ist die vermeintliche Lebensdauer eines Frameworks auch nur eines von vielen Kriterien zur Auswahl. Aber in meinen Augen schon ein wichtiges.
Andreas Richter 12.10.2013
Da bin ich ganz Deiner Meinung!

Bin nun endlich auch mal dazu gekommen, mir die verlinkten Folien anzusehen. Die Google-Trends sind sehr effektvoll, aber eine gewisse Skepsis bleibt da natürlich. Aber die verlinkten Demos finde ich sehr gut und kann sie auch anderen Lesern dieses Threads empfehlen.
Matthias Hlawatsch 12.10.2013
Die ersten drei Demos (model binding, explicit model definition und model watches) illustrieren übrigens auch gut, warum ich Knockout bevorzuge. Drei Wege zum selben Ziel, bei der zweiten habe ich für die berechnete Eigenschaft sogar runde Klammern im HTML wie bei Knockout (aber für die anderen nicht) - da setzt Knockout mehr Einheitlichkeit durch und setzt mich nicht der Qual der Wahl aus, welche Variante ich denn nun nehmen soll.
Matthias Hlawatsch 12.10.2013
Ich finde diese Diskussion zum Thema lebensdauer von Frameworks immer etwas befremdlich. Im Idealfall wähle ich ein (OpenSource)Framework nach Kriterien aus wie Features die ich heute und in absehbarer Zukunft brauche und nach der Code-Qualität aus. Ein Framework was Alpha-Stadium hat, wo die hälfte der Features nur geplant oder halbfertig umgesetzt sind versucht man doch tunlichst zu vermeiden.
Da die Code-Qualität stimmt kann ich Bugs im Framework selber fixen wenn die Entwicklung des Frameworks eingestellt wird, oder in eine andere Richtung verläuft als ich erwarte.
Floyd 21.10.2013

Stelle deine Javascript-Frage jetzt!