2013-06-17 19 views
6

I am exploring diversi modelli MV * e notato che MVP viene utilizzato molto pesantemente nelle applicazioni .Net ma quasi nessun altro.
L'unico altro grande framework che sembra incorporarlo è GWT ma solo in alcune parti.esempio Model-View-Presenter app in nodejs

  1. Perché MVP è una cosa simile a Microsoft (perché non è così popolare in altre lingue)?
  2. Esiste un'app/progetto nodejs che utilizza MVP (preferibilmente con l'origine che posso esaminare)?
+1

forse è solo un caso di questo http://stackoverflow.com/questions/327955/does-functional-programming-replace-gof-design-patterns (in .net) – mkoryak

+0

Java SWT e Swing sono MVP-ish, Non riesco a ricordare se CakePHP fosse un approccio MVC o più specificamente MVP - è passato molto tempo da quando ci ho lavorato.E per quanto riguarda Javascript in generale ci sono alcuni framework che eseguono un pattern di progettazione MV * sul lato client che potrei snocciolare. Tuttavia, presumo tu stia cercando qualcosa sul lato server, forse qualcosa che funziona con un ORM come il sequelize, è corretto? – hoonto

+0

sì sto cercando un esempio MVP lato server. Non mi interessa davvero cosa ORM userebbe, se esiste. Sul lato client, penso che la spina dorsale si avvicini a un MVP – mkoryak

risposta

1

Nessun grande esempi di MVP in nodejs. Abbiamo fatto un sacco di ricerche e implementato lo TODO app utilizzando il pattern MVP in nodejs e .net.

Non è ancora perfetto, ma penso che colmi una lacuna. Le richieste di pull sono benvenute.

https://github.com/EchoGlobalLogistics/mvp

-1

È possibile utilizzare Node in modo MV *. Qui ci sono alcune domande veramente buoni/risposte che ho usato come guida per strutturare le mie applicazioni:

How to structure a express.js application?

ExpressJS How to structure an application?

Ci sono alcuni quadri per il nodo così che sono MV * basati :

  • Matador
  • Il nuovo Sails.js (base al largo di Rails)
  • La maggior parte dei framework di nodi è costruita su Express.js, che può essere adattata per essere MV * come spiegato nelle risposte sopra.

Ecco uno sample app costruito su puro espresso in modalità MV *.

+0

tutti questi sono Quadri MVC. – mkoryak

0

tl; dr Vedere il framework flatiron in particolare sul plug-in CLI. Anche questo articolo https://blog.nodejitsu.com/writing-cli-apps-with-flatiron e la sua sezione di esempio.

rispondere alla tua prima domanda direi che MVP non è tutto che Microsoft, anche Wikipedia articolo afferma che. Solo i progettisti di linguaggi in Microsoft hanno scelto il paradigma di nascondere i dettagli dell'implementazione dei widget.

voi Quando come un utente di interagire con un widget c'è un sacco di roba in corso. E in qualche misura può sembrare che il widget stesso possa essere visto come una piccola applicazione con il proprio modello di business logic, con la sua vista e il proprio controller. Pensa ad esempio a un dropdown: ha una serie di metodi per disegnare effettivamente alcuni rettangoli sullo schermo, ha anche dei metodi per presentare un elenco di valori come testo, e quando fai clic su qualche elemento si cambia colore di sfondo e testo andare avanti che avviene secondo certe regole (pensa alla logica del business). La piattaforma .Net di Microsoft ha molto a che fare con l'interfaccia utente. Questo è il motivo per cui è così importante scegliere un paradigma che si adatti meglio a questo scopo.

Nodo d'altra parte è una piattaforma completamente backend, non è un framework per la creazione di applicazioni web. Non sto dicendo che non puoi o non dovresti creare un'app web con esso. Quello che sto dicendo è che un ruolo del codice Node nell'applicazione web dovrebbe essere limitato all'IO. Ottenere richieste, inviare risposte, inviare/ricevere dati da/per depositi, magari analizzare. Ed è possibile creare un framework per la creazione di applicazioni Web in cima al nodo, naturalmente.

Cercando di seguire MVP durante la creazione di un'applicazione web, probabilmente si vuole avere Presentatore il più vicino possibile alla resa effettiva dei widget. In caso di applicazioni Web che sarebbero un browser.Nodo in questo caso svolgerebbe un ruolo di server REST (o qualsiasi altro modo preferito di scambio dati può essere usato al posto di REST qui).

Esiste una classe diversa di applicazioni che è possibile utilizzare per creare Nodo. Quelli sarebbero app CLI. Qui è dove puoi creare applicazioni usando MVP e avere Presenter in Node. Per cercare degli esempi suggerirei di guardare al webiron flat framework che ha un buon supporto per la creazione di app clie e ha anche alcuni esempi di tali app: https://blog.nodejitsu.com/writing-cli-apps-with-flatiron.

Inoltre c'è https://github.com/mscdex/node-ncurses. Questo può darti la possibilità di "lanciare il tuo MVP". È una buona pratica quando il tuo obiettivo è esplorare la cosa.

3

a parlare del motivo di essa cercando come una cosa di Microsoft, può essere radicata alle decisioni di progettazione di almeno 2 grandi aziende e dei loro rispettivi quadri. Microsoft ha incorporato MVP in .NET. Mentre Apple ha optato per MVC in Cocoa.

Per quanto riguarda JavaScript, dare un'occhiata al quadro recente Riot.js https://moot.it/blog/technology/riotjs-the-1kb-mvp-framework.html

Anche se non è particolarmente un "quadro node.js", è un esempio di qualcosa che si muove verso questo termine di "Isomorphic JavaScript" (Il livello JavaScript è stato eseguito sul client + server) e cosa può essere portato in tavola attirando molti ingegneri da esperienze e background diversi.

Da tale articolo:

modelli Riot definiscono l'applicazione. È la tua logica aziendale esposta al mondo esterno con un'API ben pensata. Un'unità completamente isolata e verificabile che può essere eseguita in browser e server (node.js).

Dalla mia esperienza, e vi prego di perdonare la mia prossima dichiarazione generale in generale, il motivo per cui MVP non è visto che molto in questa tecnologia è perché molte persone o non hanno sentito parlare, dimenticato, o semplicemente don vedo molta differenza da cosa sia un "Controller" e che sia un "Presenter". Ciò non significa che non ci sia una differenza e Tero Piirainen ha delineato le cose abbastanza bene nell'articolo Riot.js per persone provenienti da altri framework MVC JavaScript.

0

Abbiamo recentemente utilizzato nodejs con express per la creazione di un'app Web. Mentre ci lavoravamo, abbiamo costruito un piccolo framework sopra ad express per organizzare meglio il nostro codice. Il framework ti obbliga a scrivere gestori separati (Presenters) per richieste GET e comandi per richieste POST. (vedere martinfowler.com/bliki/CQRS.html). Il framework forza anche il pattern Post-Redirect-Get (it.wikipedia.org/wiki/Post/Redirect/Get) consentendo solo i reindirizzamenti dai Comandi. Il pacchetto npm è expressmvp (https://www.npmjs.org/package/expressmvp).