2013-04-02 13 views
13

Ho chiesto questa domanda alcuni giorni prima qui e nessuno ha risposto.
Anche io l'avevo chiesto in forum.javascriptMVC.com e ora ho una risposta, tuttavia ho bisogno di un po 'più di idea.Come combinare JMVC (javascript-mvc) e lato server MVC insieme

Domanda:

I read javascriptMVC's documents and I loved it. 
But I don't know how to use it in a large scale project. 

Credo che sul lato server è necessario un framework MVC o può aiutare tanto. E ho lavorato con framework PHP lato server.

Sono confuso, la mia comprensione dei progetti JavascriptMVC è che gestiscono gli eventi lato client negli eventi di acquisizione del browser, eseguono richieste AJAX, gestiscono le risposte/dati dal server e li mostrano all'utente in un'interfaccia grafica.

So che nei progetti MVC PHP abbiamo anche controller (e azioni) che ognuno di essi è una pagina separata con un singolo punto di ingresso, il mio punto è che queste pagine sono intere richieste HTTP.

penso che la combinazione di questi due quadri sarebbe in una forma di un singolo o pochi file pesanti (tra cui js, css, imgs ecc) che carica e gestita da un altro libary JavaScript come steal.js . Ora l'utente può lavorare con il sito e le sue azioni (come eventi) che determinano l'esecuzione di funzioni js che possono modificare qualcosa nell'interfaccia utente o causare una richiesta AJAX, come in Yahoo Mail dove la maggior parte delle cose accade nella pagina una.

Quindi, come influirà sul design di controller e azioni in PHP? Intendo normalmente nei framework MVC di PHP un sacco di controller e azioni significano molte pagine. Penso che a causa di AJAX il numero di controller e azioni dovrebbe essere effettivamente inferiore. Penso anche che a causa di JMVC la maggior parte dei controller (e delle azioni) dovrebbero rivolgersi ai risponditori AJAX, tuttavia in che modo i layout e le viste devono essere gestiti in questo contesto?

Infine

  • Voglio sapere sui diversi aspetti di questo metodo (JMVC + MVC). (Sto usando Yii come framework MVC lato server e JavascriptMVC come MVC lato client).
  • Voglio anche conoscere la gestione dei dati sul lato client.
  • Mi piacerebbe capire come utilizzare AJAX e socket Web, dove possiamo usare AJAX e dove possiamo usare websockets ?.
  • Voglio comprendere l'archiviazione locale come possiamo usarlo per la gestione dei dati delle pagine simulata e forse il caching, come possiamo memorizzare nella cache i dati provenienti dal server come JSON in una forma di pagina? Sto lavorando a un progetto molto ampio e voglio costruire le sue fondamenta in modo molto forte.
+1

e alex da forum.javascript.com ha detto questo.1) Generalmente con JMVC stai costruendo applicazioni a singola pagina (anche se potresti avere diverse pagine per app complesse con layout diversi e condividere codice caricato tra) 2) con JMVC renderete tutte le viste sul lato client usando i modelli (EJS, Moustache) 3) sul server con le azioni del controller deve implementare l'API JSON (RESTful o simile), in modo che il server risponda con i dati, non con html. Rappresenterà questi dati all'utente utilizzando la logica del client (modelli, viste, controlli) se un corpo ha altra idea, per favore aiutami – ncm

+1

Mi sembra che i framework javascript non offrano esempi di funzionamento con un framework lato server. – MageNewbie

+2

Normalmente quando un controller lato server viene indirizzato da una richiesta http, restituirà una risposta sotto forma di vista (markup html). Se la richiesta http era una richiesta AJAX, la risposta dal controller lato server sarebbe stata restituita al callback AJAX. In questo modo javascript può recuperare i dati dal back-end attraverso un URI. Questo è il metodo che utilizzo attualmente con il framework Kohana e che usa jQuery per generare richieste http. – MageNewbie

risposta

3

dire che si Jave un quadro in cui JMVC

  • Il modello ottiene i dati dal server utilizzando AJAX richiesta - in attesa di risultati JSON.
  • La vista non si basa sul server, per di più che fornisce il codice HTML non elaborato.
  • I controller non si basano sul server, per un numero maggiore di quelli che servono i file JS.

In sostanza si utilizza il server per cosa "dovrebbe" essere utilizzato, per l'archiviazione e l'elaborazione dei dati, mentre si lascia che il browser client gestisca tutte le cose noiose.

Ora, vediamo come definire un framework lato server. Come la vedo io abbiamo diverse opzioni, tutte abbastanza simili, anche se un po 'diversa (tutti someing tornando in formato JSON):

  • Una vera e propria MVC come cakePHP
  • implementazione personalizzata
  • implementazione WebService

Personalmente userei un WebService, e ho già. O meglio, ho usato un WebService JSON-RPC basato su WebSocket. L'utilizzo di un MVC completo presenta i suoi inconvenienti in termini di manutenibilità e, non trascurabile, carico del server. Ma è molto possibile, basta implementare una vista che formatta la pagina come JSON ...

Fare un client JMVC non significa, a mio avviso, che non può richiedere nuovo codice HTML dal server. Ma ciò significa che l'HTML richiesto deve essere privo di dati, oltre ai metadati Java-View deve sapere dove inserire i dati ricevuti, ad esempio il WebService.

Quindi una pagina principale del JMVC potrebbe semplicemente contenere un singolo

<div id=content></div> 

menu e click può recuperare una sottopagina dal server e caricare il contenuto in content. Quindi quel contenuto caricato può contenere un po 'di javascript che avvia le richieste di WebService per ottenere dati dal server, da visualizzare nelle cartelle vuote che a sua volta contiene.

3

Il primo controllo https://stackoverflow.com/a/4458566/718224 in seguito è possibile spostarsi in avanti.


Prova questa (da https://stackoverflow.com/a/8424768/718224)

No, tu non necessità usarlo sul lato server, ma sarà aiuto con l'organizzazione/separazione di applicazione e la logica di business. A seconda della scala della tua applicazione, ciò potrebbe aiutare enormemente in futuro.

La chiave è solo assicurarsi di organizzare bene il codice back-end, altrimenti si otterrà una base di codice monolitica e/o difficile da gestire.

Le viste lato server contengono il codice HTML e qualsiasi codice JavaScript che può o non può effettuare richieste al server. Ciò presuppone che tu stia effettivamente utilizzando PHP per costruire le pagine a cui un utente naviga.

Se si dispone di una pagina html statica che si costruisce da sola utilizzando le richieste AJAX, allora è possibile che non sia necessario utilizzare le visualizzazioni lato server. È probabile che i controller eseguano più volte dati JSON. Se questo è il caso, non rende i modelli e i controller meno utili.


Prova questa (da https://stackoverflow.com/a/8424760/718224)

Se si utilizza uno qualsiasi dei principali framework PHP (CakePHP, codeigniter, Symfony, ecc), allora si sta utilizzando MVC già. Se la logica lato server è più complessa di alcuni script molto semplici di quanto probabilmente si dovrebbe utilizzare uno di questi framework elencati, utilizzando MVC sul server e il client.

Molte delle applicazioni web più grandi oggi in fase di sviluppo si stanno spostando verso l'utilizzo di un framework MVC per il codice dell'applicazione lato client e lato server. È un modello fantastico per separare le preoccupazioni per molte applicazioni di grandi dimensioni, in particolare le applicazioni server di richiesta/risposta e le app browser basate sugli eventi.


Prova questa (da https://stackoverflow.com/a/8427063/718224)

Backbone.js collega l'applicazione su un'interfaccia JSON RESTful. Sinceramente, trovo che funzioni meravigliosamente insieme al framework MVC. Se crei un'API RESTful, puoi lasciare che il server gestisca gli aggiornamenti CRUD abbastanza facilmente. Tutto il tuo codice lato server sarà responsabile sta salvando e inviando oggetti JSON a Backbone.js. Quindi lascia che la maggior parte della tua logica e magia avvengano all'interno del framework Backbone.js.


Prova questa (da https://stackoverflow.com/a/8078282/718224)

In primo luogo, un lato client framework MVC come Backbone non è solo per le applicazioni singole di paging. Puoi anche utilizzarlo per aggiungere alcune ricche interazioni a una o più visualizzazioni di un'app più tradizionale. Forniscono semplicemente strutture e astrazioni di dati sul client.

Successivamente, questi framework lato client sono progettati specificamente per funzionare con i framework MVC back-end. Backbone.js (dato che lo hai taggato in modo specifico) i modelli e le raccolte funzionano con i servizi REST. Parleranno tramite i verbi GET/POST/PUT/DELETE e alla fine comunicano con i controller sul back-end quando fanno richieste asincrone.

Nel caso di Backbone, comunica JSON anziché HTML. Nel caso di Rails, questo è davvero facilmente gestibile nel controller. Se la richiesta è HTML, restituisci una vista in formato HTML. Se si tratta di una richiesta JSON (* .json o Content-type), il controller restituisce una rappresentazione JSON dei dati. Suppongo che sia così facile in Django come in Rails avere lo stesso controller che risponde a più richieste di contenuto (HTML, XML, JSON, ecc.)

questo può aiutarti.

+2

Advait, è corretto fare riferimento ad altre risposte, ma non va bene semplicemente copiarle e incollarle direttamente senza attribuzione. Le prime tre sezioni sono solo copie delle risposte a [questa domanda] (http://stackoverflow.com/questions/8424663/should-i-use-mvc-both-on-client-and-server) e l'ultima è una copia di [questa risposta] (http://stackoverflow.com/a/8078282). Se copi testo da altre risposte o da altri siti web, ti preghiamo di ** fornire un link all'originale ** e rendere più chiaro che non hai scritto il testo da solo. – JJJ

+0

@Juhana, ok capisco grazie. l'ho cambiato dopo qualche tempo. –

2

applicazioni lato client web e pagine web lato client ricchi spesso uso jmvcbackbones e ecc e con quel tipo, se le librerie js e HTML5 tecnologie come webstorage si può avere una maggiore Applocation come siti web che tutte le cose che accade nel lato client come gestione dei modelli e così via e abbiamo solo una richiesta/risposta ai server per ottenere/impostare dati o aggiornare lo stato. e abput prima sezione hanno ragione un sito jmvc sono più simili a siti web di una sola pagina. vale a dire hotmail yahoo, ecc.

Problemi correlati