Passive Ansicht in Javascript
-
18-09-2020 - |
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.
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
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 einModell 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
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.