Hallo,
Das ist für mich ein wichtiger Punkt, dass die IDE (im konkreten Fall wird das PhpStorm sein) weiß, was es autozuvervollständigen gibt, oder notfalls dieses Wissen aus einem von ihr auswertbaren Kommentar ziehen kann.
Strings werden in Backbone und Ember zum Lesen und Setzen von Modeleigenschaften verwendet, weil so das Observable-Pattern umgesetzt wird. In ReactJS ist ebenfalls ein expliziter Setter-Aufruf mit einem Objektliteral nötig. Der Grund ist einach, dass ES5 Setter und Object.observe()
noch nicht breit unterstützt werden.
[Bei Angular] liegt nicht so viel zum Framework gehörender Code in der Anwendung, das arbeitet mit POJOs (Plain Old Javascript Objects) und betreibt seinen nötigen Änderungsüberwachungsmechanismus im Hintergrund.
Ja, Controller-Scopes in Angular sind einfache Objekte, was wiederum ausschließt, dass die IDE sinnvoll vervollständigt, weil die Typinformation fehlt. Ich weiß nicht, ob sich das typisieren oder annotieren lässt.
Insofern gefallen mir auch Patterns wie Active Record nicht, zu viel in einer Klasse, Daten und eventuell Geschäftslogik gemischt mit Verwaltungskram.
Das funktioniert gut, solange es wenig konventioneller Code bleibt. Man ist davon abgekommen, entsprechende Models aufzublasen und hält die Implementierungen so schmal wie möglich. Für komplexes Querying, Persistenz, Validierung, Transformation usw. stehen andere Pattern zur Verfügung, die vom Model getrennt sind.
Haben die anderen Frameworks herausragende Eigenschaften, die man gern haben möchte?
Ember versteht sich mehr als Framework, das Best Practices und Konventionen forciert. Das haben die Ember-Leute gut erklärt:
http://www.youtube.com/watch?v=jScLjUlLTLI
http://eviltrout.com/2013/06/15/ember-vs-angular.html
Angular hat andere Alleinstellungsmerkmale, wie z.B. die Nutzung von Plain-HTML für Templates, die Scope-Chain sowie die Nutzung von Factories.
Das ist nun jeweils nichts, was einem fundamental andere Dinge ermöglicht, aber es sind wichtige Architekturentscheidungen.
Ich würde auf jeden Fall mit einem halbwegs vollständigen Framework wie Angular oder Ember loslegen. Es gibt viele kleinere und modularere, aber die klammern viele Fragen, die sich fast in jeder Anwendung stellen, kurzerhand aus.
Mathias