Question

Je pense à une implémentation de MVP - Modèle de vue passive en JavaScript.Dans la plupart des cas, la vue sera de simples éléments DOM où le présentateur attachant les auditeurs d'événements.Mais lorsqu'il s'agit de widgets comme des pseudo-boîtes pseudo basées sur JavaScript, des fonctions Auto Suggestion ou de l'ARIA, devraient-elles faire partie d'une classe de vue JavaScript ou que la logique de modification de la vue doit-elle faire partie du présentateur? J'ai regardé le Vue JavaScriptMVCS et il semble qu'ils ne sont que des modèles générés par HTML sanstoute logique.Mais pour moi, il ne semble pas différent entre un présentateur qui est écouté à HTML Selectbox et celui qui a été écouté à une pseudo Selectbox avec une logique JavaScript pour imiter une boîte de sélection réelle.Les deux ne devraient pas se soucier de la façon dont la boîte fonctionne en interne, il suffit d'écouter l'événement de changement.

Alors quoi tu penses.Quel est le travail de la classe de visualisation.

Était-ce utile?

La solution

Le travail de la vue est comme un Adaptateur à la technologie de vue. Dans ce cas, votre technologie de vue est probablement jquyery sur HTML via JavaScript. La vue doit être conçue pour faire trois choses:

  • Sachez lorsque des événements se produisent et communiquent ces événements au présentateur (cela peut être indirectement, à l'aide d'un cadre de messagerie comme POSTAL.JS )
  • Indiquez au présentateur (quand demandé) "Quelle est la valeur de x " où x est une valeur représentée dans la vue.
  • Acceptez les messages du présentateur (généralement via un appel de méthode directe) pour modifier les valeurs à la vue.

Une vue dans le motif de vue passive est non étatique . Je répète, une vue ne représente pas l'état . Ce que j'entends par ceci, c'est que tous les Etat et la connaissance de la transition de l'état sont représentés par le présentateur. La vue est simplement la colle qui fournit une indirection entre le présentateur et la technologie de vue réelle. Au-delà des trois points de bullet ci-dessus, il n'envoie aucune connaissance de ce qu'il faut faire avec les informations qu'il contient . Ceci est important, car vous ne devriez jamais vous attendre à ce qu'une vue soit dans un état cohérent. Vous devez toujours tenir le présentateur responsable de la gestion de l'état de la vue.

Entrez la description de l'image ici

La pile ci-dessus montre comment je prévois le modèle, la vue et le présentateur interagissant, ainsi que leur relation avec la technologie de vue et le contrôleur.

  • Le navigateur, HTML et DOM (géré via JQuery) sont la technologie de vue . Ceux-ci sont intrinsèquement complexes et incapables de représenter votre modèle.
  • La vue protège votre logique de la technologie vue . Il fournit une indirection afin que vous puissiez vous concentrer sur un code ancien uni dans votre présentateur . La vue doit utiliser utiliser une sorte de messagerie afin de communiquer dans le présentateur. Cela empêche une dépendance bidirectionnelle entre la vue et le présentateur. Il permet également à plusieurs présentateurs de manipuler une vue.
  • Le présentateur devrait être responsable de la compréhension de la nature abstraite de la vue et devrait gérer l'état Modèle en fonction de son interface à la vue. Il est capable de comprendre comment récupérer un modèle du maître de contenu et comment persister le modèle retour au serveur.
  • Le modèle est une représentation de l'état à un point spécifique à temps . Il peut également servir de Dto entre le contrôleur et le présentateur . En JavaScript, il est facile et parfois préférable de simplement ajouter un comportement de présentateur sur le modèle .
  • Le contrôleur coordonne la navigation dans l'application et est responsable de l'abstraction des services back-end de la présentation.

Autres conseils

L'objet de vue devrait être responsable de la dessin même.Une vue passive sait comment faire des choses, pas ce que faire.Il doit être responsable de tirer de ses propres événements.Juste parce que c'est un widget de boîte de sélection personnalisé ne le rend pas différent d'une boîte de sélection régulière.

Si le présentateur a repris toutes les responsabilités des vues, il n'y a pas besoin d'une vue du tout.Pourrait aussi bien avoir un présentateur seulement.

Les vues de JavaScriptMVC sont des modèles de clientèle factice.Ce sont des contrôleurs de nœuds ont tendance à jouer un rôle de vue plus traditionnel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top