Angular.js und DAO-Muster

8

Zuallererst muss ich zugeben, dass ich Angular.js ziemlich neu kenne und ich habe noch nie ein neues js Framework wie Backbone oder Knockout verwendet. Ich erstelle eine Anwendung, die mithilfe der RESTful-API mit dem Server kommuniziert. Ich habe viel in eckige Dokumentation und Blog-Notizen gegraben, um es richtig zu machen.

Ich fand Beispiele meistens mit $ resource . Es sieht ziemlich gut aus: Viele eingebaute Methoden, wenn Sie Ihre REST-Schnittstelle richtig entwerfen, müssen Sie nicht mehr schreiben.

Aber ich (und mein gesamtes Team) sind mehr daran gewöhnt, an JavaEE zu denken: leichte Modellklassen (POJO, etc), DAO-Klassen, die Modell und optional Service-Layer zwischen DAO und Controllern beibehalten und abrufen. Auf der anderen Seite erzeugt in Angular $ resource etwas, das eher dem aktiven Datensatz ähnelt.

Ich habe bereits zwei Wege gefunden, wie man ein DAO-Muster in Angular implementieren kann:

  1. Alles von Grund auf neu schreiben, bis zur $ http-Abstraktionsstufe. Ich würde jede DAO-Methode als $ http-Aufruf implementieren und auf Fehler achten.
  2. Bei der Verwendung von $ Ressourcenobjekten werden normalerweise einfache Modellklassen verwendet und an DAOs übergeben, die als einzige für das Aufrufen von Aktionen wie $ save () verantwortlich sind. Natürlich können wir nicht verhindern, dass wir sie an einem anderen Ort anrufen, aber die Lösung mit solchen Konventionen ist gut genug für mich.

Der zweite Weg sieht besser aus, weil der vorhandene Code wiederverwendet wird. $ resource hat ein schönes Verhalten des Versprechungsobjekts und ich werde glücklich sein, wenn ich es nicht selbst implementieren muss.

Endlich also die Hauptfrage: Ist der active record Ansatz der einzige Weg, um Datenzugriff in Angular, Backbone und anderen Tools zu ermöglichen? Vielleicht hat jemand schon versucht, eine ähnliche Lösung in seinem Code zu integrieren, die eher DAO ähnelt, und kann seine Gedanken darüber teilen?

Und die zweite Frage: Reicht $ ressource object aus, wenn es um den Umgang mit Fehlern, Verbindungsverlusten und anderen Problemen geht? Lohnt es sich $ ressource zu verwenden, oder ist es besser, mit der niedrigeren Stufe $ http zu beginnen.

Ich stehe am Anfang des Projekts und ich weiß, dass diese Entscheidung das gesamte Projektleben später beeinflussen kann, also möchte ich das Beste auswählen.

    
Mequrel 25.04.2013, 15:02
quelle

1 Antwort

2

Ich stimme völlig zu. Hier ist die Art, wie ich es mache:

%Vor%

Dann können Sie das CustomerRepository dort einfügen, wo Sie es benötigen. Zum Beispiel:

%Vor%     
testing123 25.04.2013 22:33
quelle