MVW de quê?

351

Aqui está a descrição do conteúdo para a página AngularJS:

AngularJS é o que teria sido o HTML, se tivesse sido projetado para criar aplicativos da web. Modelos declarativos com ligação de dados, MVW, MVVM, MVC, injeção de dependência e excelente histórico de testabilidade, todos implementados com JavaScript puro do lado do cliente!

Então, o que MVW representa? (Considerando a briga entre MVC, MVVW, MVP etc, eu acho que "seja qual for", Model-View-Whatever = P)

slacktracer
fonte
Eu acho que você está certo com o Model-View-Whatever! code.google.com/p/dark-matter-data/wiki/MVWOverview
John

Respostas:

447

Realmente representa o que quer que seja, como no que funciona para você

MVC vs MVVM vs MVP. Que tópico controverso sobre o qual muitos desenvolvedores podem passar horas e horas debatendo e discutindo.

Por vários anos, o AngularJS esteve mais próximo do MVC (ou melhor, de uma de suas variantes do lado do cliente), mas com o tempo e graças a muitas refatorações e melhorias na API, agora está mais próximo do MVVM - o objeto $ scope pode ser considerado o ViewModel que é sendo decorado por uma função que chamamos de Controlador.

Ser capaz de categorizar uma estrutura e colocá-la em um dos buckets MV * tem algumas vantagens. Ele pode ajudar os desenvolvedores a se sentirem mais confortáveis ​​com suas APIs, facilitando a criação de um modelo mental que representa o aplicativo que está sendo construído com a estrutura. Também pode ajudar a estabelecer a terminologia usada pelos desenvolvedores.

Dito isso, eu prefiro ver os desenvolvedores criar aplicativos chiques que são bem projetados e seguem a separação de preocupações, do que vê-los perder tempo discutindo sobre o absurdo do MV *. E, por esse motivo, declaro que o AngularJS é o framework MVW - Model-View-Whatever. Onde o que quer que seja significa "o que funciona para você" .

O Angular oferece muita flexibilidade para separar bem a lógica da apresentação da lógica comercial e do estado da apresentação. Use-o para aumentar sua produtividade e capacidade de manutenção de aplicativos, em vez de discussões acaloradas sobre coisas que no final do dia não importam tanto.

Christian.K
fonte
8
@ FrançoisWahl: Eu disse a mesma coisa comigo cinco segundos antes de ler seu comentário. MV * provavelmente teria sido mais imediatamente óbvio para a grande maioria dos desenvolvedores de software que provavelmente já estão familiarizados com a convenção onipresente '*' de curinga.
David Frye
2
Você não pode usar o Google MV *. Também ... transmite "o que quer" a frustração muitas pessoas sentem quando se discute a semântica de MVx
Clintm
22

Dito isso, eu prefiro ver os desenvolvedores criar aplicativos chiques que são bem projetados e seguem a separação de preocupações, do que vê-los perder tempo discutindo sobre o absurdo do MV *. E por esse motivo, declaro que o AngularJS é o framework MVW - Model-View-Whatever. Onde o que significa "o que funciona para você".

Créditos: AngularJS Post - Igor Minar

Adrian Enriquez
fonte
1

Eu sinto que MWV (Model View Whatever) ou MV * é um termo mais flexível para descrever algumas das singularidades dos Angularjs na minha opinião. Isso me ajudou a entender que é mais do que uma estrutura JavaScript do MVC (Model View Controller), mas ainda usa o MVC porque possui uma Model View e Controller.

Também pode ser considerado como um padrão MVP (Model View Presenter). Penso em um Presenter como a lógica de negócios da interface do usuário no Angularjs for the View. Por exemplo, usando filtros que podem formatar dados para exibição. Não é lógica de negócios, mas exibe lógica e me lembra o padrão MVP que usei no GWT.

Além disso, também pode ser um MVVM (Model View View Model), a parte View Model sendo a ligação bidirecional entre os dois. Por fim, é o MVW, pois possui outros padrões que você pode usar, além dos mencionados por @Steve Chambers.

Concordo com as outras respostas de que ficar pedante nesses termos pode ser prejudicial, pois o objetivo é entender os conceitos dos termos, mas, da mesma forma, entender completamente os termos ajuda um quando eles estão projetando seu código de aplicativo, sabendo o que vai para onde e por quê.

James Drinkard
fonte