Frage

Ich denke an eine Implementierung des MVP-Passiv-Ansichtsmusters in JavaScript.In den meisten Fällen ist die Ansicht einfache DOM-Elemente, in denen die Veranstalter-Hörer anhängen.Wenn es jedoch um Widgets wie JavaScript-basierte Pseudo-Selectboxes, Auto-Empfohlene oder ARIA-Funktionen herrscht, sollte dies jedoch Teil einer JavaScript-Ansichtsklasse sein oder die Logik, um die Ansicht zu ändern, um Teil des Moderators zu sein? Ich habe auf die javaScriptmvcs View und es scheint, dass sie nur Vorlage erzeugt HTML ohnejede Logik.Aber für mich scheint es nicht anders zu sein, der sich zwischen einem Moderator anhört, der auf HTML SelectBox hört, und einer, die mit einer Pseudo-Selectbox mit JavaScript-Logik, um ein echtes SELECT-Feld zu investieren.Beide sollten sich nicht darum kümmern, wie das Kästchen intern funktioniert, sie müssen nur das Änderungsereignis hören.

Was denkst du?Was ist der Job der Sichtklasse.

War es hilfreich?

Lösung

Der Job der Ansicht ist als Adapter zur View-Technologie. In diesem Fall ist Ihre View-Technologie wahrscheinlich über JavaScript über HTML über HTML. Die Ansicht sollte für drei Dinge ausgelegt sein:

  • wissen, wann Ereignisse auftreten, und diese Ereignisse an den Moderator kommunizieren (dies kann indirekt mit einem Messaging-Framework wie postal.js )
  • Erzählen Sie dem Moderator (wenn Sie gefragt werden) "Was ist der Wert von x ", wobei x ein Wert ist, der in der Ansicht dargestellt ist.
  • akzeptieren Sie Nachrichten vom Moderator (normalerweise über einen direkten Methodenanruf), um die Werte in der Ansicht zu ändern.

Eine Ansicht im passiven Ansichtsmuster ist nicht statistisch . Ich wiederhole, Eine Ansicht repräsentiert nicht den Zustand . Was ich damit meine, ist, dass der gesamte Staat und das Wissen des staatlichen Übergangs durch den Moderator dargestellt wird. Die Ansicht ist einfach der Klebstoff, der die Indirektion zwischen dem Moderator und der eigentlichen View-Technologie bietet. Jenseits der drei Stock-Punkte, die darüber hinausgeht, ist kein Kenntnis von Kenntnissen, was mit den Informationen zu tun ist, die sie enthält, . Dies ist wichtig, da Sie niemals erwarten sollten, dass sich eine Ansicht in einem konsequenten Zustand befindet. Sie sollten den Moderator immer verantwortlich, um den Zustand der Ansicht zu verwalten.

eingeben Sie das Bildbeschreibung hier ein

Der stapel oben zeigt, wie ich das Modell, Sicht und Moderator interagieren, sowie ihre Beziehung zur Sichttechnologie und des Controllers.

  • Der Browser, HTML und DOM (durch JQuery verwaltet) sind die View-Technologie . Diese sind von Natur aus komplex und nicht in der Lage, Ihr Modell darzustellen.
  • Die Ansicht schützt Ihre Logik von der View-Technologie . Es bietet eine Indirektion, damit Sie sich auf einfache alte Code in Ihrem moderner konzentrieren können. Die Ansicht sollte eine Art Messaging verwenden, um wieder an den Moderator zu kommunizieren. Dies verhindert eine bidirektionale Abhängigkeit zwischen der Ansicht und dem Moderator. Es ermöglicht auch mehrere Moderatoren, eine Ansicht zu manipulieren.
  • Der Moderatorin sollte dafür verantwortlich sein, die abstrakte Natur der Ansicht zu verstehen, und sollte den Status modell basierend auf seiner Schnittstelle zur Ansicht verwalten. Es ist in der Lage, zu verstehen, wie man ein Modell von der Contoller abgerufen wird und wie das -MODELLE an den Server zurückbleibt.
  • Das modell ist eine Darstellung des Zustands an einem -spezifischen Zeitpunkt in der Zeit . Es kann auch als DTO zwischen dem Controller und dem moderner dienen. In JavaScript ist es einfach und manchmal bevorzugt, das modell einfach präsentes Verhalten hinzuzufügen.
  • Der controller koordiniert die Navigation innerhalb der Anwendung und ist dafür verantwortlich, die Back-End-Dienste aus der Präsentation abzufressen.

Andere Tipps

Das Ansichtsobjekt sollte für die Zeichnung selbst verantwortlich sein.Eine passive Ansicht weiß, dass wie Sachen tun, nicht was zu tun ist.Es muss dafür verantwortlich sein, seine eigenen Ereignisse zu schießen.Nur weil es ein benutzerdefiniertes Select Box-Widget ist, macht es nicht anders als ein reguläres SELECT-Feld.

Wenn der Moderator die Verantwortlichkeiten der Ansichten übernommen hat, ist es überhaupt keine Ansicht erforderlich.Könnte genauso gut nur einen Moderator haben.

JavaScriptMVCs Ansichten sind Dummy-Client-Seitentschablonen.Es sind Node-Controller, neigen dazu, eine traditionellere Sichtrolle aufzunehmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top