Pergunta

Estou pensando em uma implementação de MVP - padrão de visualização passiva em JavaScript.Na maioria dos casos, a exibição será simples elementos DOM em que o apresentador anexando ouvintes de eventos.Mas quando se trata de widgets como Javascript baseado em PseudoBoxes, sugerir automaticamente ou recursos da ARIA, caso isso faça parte de uma classe de visualização de JavaScript ou a lógica para alterar a exibição fique parte do apresentador? Eu já olhei para o JavaScriptMvcs Visualizar e parece que eles são apenas o modelo gerado HTML semqualquer lógica.Mas, para mim, não parece diferente entre um apresentador que é listen para a HTML SelectBox e aquele que ouça uma caixa de sellbox pseudo com o JavaScript Logic para imitar uma caixa de seleção real.Ambos não devem se importar com a forma como a caixa está trabalhando internamente, eles só precisam ouvir o evento de mudança.

Então, o que você pensa.Qual é o trabalho da classe de visualização.

Foi útil?

Solução

O trabalho da vista é como um adaptador para a tecnologia de visualização. Nesse caso, sua tecnologia de visualização é provavelmente jquery sobre HTML via JavaScript. A visão deve ser projetada para fazer três coisas:

  • Conheça quando os eventos ocorrem e comunicam esses eventos ao apresentador (isso pode ser indiretamente, usando uma estrutura de mensagens como postal.js )
  • Diga ao apresentador (quando perguntado) "Qual é o valor de x " onde x é um valor representado na exibição.
  • Aceite mensagens do apresentador (geralmente através de uma chamada de método direto) para alterar os valores na exibição.

Uma exibição no padrão de vista passiva é não muito estado . Repito, Uma visão não representa o estado . O que quero dizer com isso é que todo estado e conhecimento da transição estatal é representado pelo apresentador. A exibição é simplesmente a cola que fornece indireção entre o apresentador e a tecnologia de visualização real. Além dos três pontos de bala acima, ele não encapsula qualquer conhecimento sobre o que fazer com as informações que contém . Isso é importante, porque você nunca deve esperar que se visne em um estado consistente. Você deve sempre manter o apresentador responsável por gerenciar o estado da visão.

Digite a descrição da imagem aqui

A pilha acima demonstra como prevejo o modelo, a visualização e o apresentador interagindo, bem como sua relação com a tecnologia de visualização e o controlador.

  • O navegador, HTML e Dom (gerenciado através do jQuery) são a tecnologia view . Estes são inerentemente complexos e incapazes de representar seu modelo.
  • a visualização protege sua lógica da tecnologia . Ele fornece indireção para que você possa se concentrar no código antigo simples no seu apresentador . A visualização deve usar algum tipo de mensagens para se comunicar de volta ao apresentador. Isso impede uma dependência bidirecional entre a visão e o apresentador. Também permite que vários apresentadores manipulem uma visão.
  • o apresentador deve ser responsável por entender a natureza abstrata da exibição e deve gerenciar o estado modelo com base em sua interface para a exibição. É capaz de entender como recuperar um modelo a partir do contenter e como persistir o modelo de volta ao servidor.
  • O modelo é uma representação do estado em um ponto específico no tempo . Também pode servir como dto entre o controlador e o apresentador . Em JavaScript, é fácil e às vezes preferível simplesmente adicionar comportamento do apresentador ao modelo .
  • O controlador coordena a navegação dentro do aplicativo e é responsável por abstrair os serviços de back-end da apresentação.

Outras dicas

O objeto View deve ser responsável por se desenhar.Uma visão passiva sabe como fazer coisas, não o que fazer.Deve ser responsável por disparar seus próprios eventos.Só porque é um widget de caixa de seleção personalizado não o torna diferente de uma caixa de seleção regular.

Se o apresentador assumir todas as responsabilidades de exibição, não há necessidade de uma visão.Pode muito bem apenas ter um apresentador apenas.

As visualizações de javascriptmvc são modelos laterais do cliente dummy.Os controladores de nó tendem a assumir uma função de visualização mais tradicional.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top