Bisher war ich ein großer Fan des MVC-Musters für die Entwicklung von Webanwendungen. Für das Web habe ich hauptsächlich PHP (mit den Frameworks Kohana und CodeIgniter) und Ruby (RoR) entwickelt.
Als meine Anwendungen auf der Ajax-Seite immer umfangreicher wurden (Apps mit nur einer Seite usw.), bemerkte ich, dass ich die grundlegenden Konzepte von MVC nur verraten konnte: Javascript erledigt die meisten Arbeiten; Das Anrufen von Controllern, nur um nach Ansichten oder mehr js / json-Code zu fragen, scheint falsch.
Nachdem ich versucht habe, alle Routing-Jobs in den Controllern zu belassen, habe ich sie jetzt grundlegend zwischen ihnen und Javascript aufgeteilt (das heißt, aus der PoV des Frameworks, Teil der Ansichten). Wenn Sie nach json fragen, wird die MVC-Subversion noch offensichtlicher: Der js-Code, der die Anforderung ausführt, ist der Controller. Der Controller des Frameworks fungiert lediglich als Proxy für die Daten des Modells - wonach ich eigentlich frage.
Also, worauf soll ich achten?
Ich habe über reine Javascript-Anwendungen nachgedacht, zum Beispiel mit backbone.js und einer dokumentbasierten, jsonspuckenden Datenbank (couchDB) als Backend, aber ich liebe meine relationalen Datenbanken.
Eine andere Option wäre die folgende: Ich würde nur "geroutete Modelle" in PHP / ruby / go / whatnot erstellen. Diese analysieren die Anfrage, rufen die Datenbank an und geben etwas Json zurück.
Dieser Ansatz sieht für mich interessant aus, aber es fehlen wesentliche Unterlagen oder akademische Analysen, so dass ich ein wenig Angst vor dem Sprung habe.
Ideen?
quelle
Antworten:
Wenn es keine akademische Analyse gibt, machen Sie es selbst. Experimentieren Sie einfach mit Ihrem nächsten kleinen Projekt und sehen Sie, wie es Ihnen gefällt. Lesen Sie Paul Grahams Aufsatz darüber, warum er sich für Lisp als Startup entschieden hat, obwohl es nicht allgemein verwendet wird. http://www.paulgraham.com/avg.html
Es gibt viele MVC-Javascript-Frameworks. Wenn Sie in erster Linie eine Javascript-Anwendung erstellen möchten, dann tun Sie es.
Erstellen Sie einfach eine ausruhende API in Rails oder in einem beliebigen Framework, das nur ein Wrapper für die Datenbank ist, und Sie müssen nicht auf Ihre relationale Datenbank verzichten. Rufen Sie die API einfach so auf, als würden Sie die Datenbank aufrufen, wenn dies eine serverbasierte Logikanwendung wäre.
Wenn Sie Ihre App auf diese Weise erstellen, können Sie außerdem ganz einfach die Offline-Unterstützung einbauen.
quelle