2012-04-17 1 views
6

Sto utilizzando .NET MVC per tutta la logica del serveride e sto distribuendo le pagine iniziali, ma la mia applicazione è molto pesante sul lato client, quindi ho adottato Backbone.JS che sta dimostrando di essere molto utileCombinazione di Serverside MVC con Backbone.js

Non sono sicuro di come progettare il mio sistema per incorporare entrambe le tecnologie. Il mio modo di vedere ho due opzioni

  1. abolire la 'V' dal MVC sul lato server, restituire JSON dati al client su pageload e utilizzare modelli di spina dorsale lato client per costruire la GUI da i modelli base JSON/Backbone.

  2. Restituisce le pagine iniziali dal server completamente renderizzate in .NET MVC. Restituisce inoltre i dati utilizzati per renderizzarli e chiama il metodo collection.reset({silent: true}) per collegare i dati restituiti alla vista da . Ho ragione nel pensare che questo sarà permettermi di apportare successivamente modifiche all'utilizzo di add/remove/change sui gestori ?

1 mi turba come ho paura di lasciar andare qualsiasi parte del MVC lato server, la sua abilità in cui il mio cuore giace.

2 Mi disturba perché sono interessato a introdurre rischi e lavoro con due metodi di rendering diversi sul server client.

Qual è il modo corretto di combinare MVC lato server con backbone.js 1 o 2 o in un altro modo?

+1

Stiamo utilizzando con successo asp.net MVC insieme a richiesta, backbone e manubri. Quando abbiamo iniziato a utilizzare il backbone non abbiamo potuto rinunciare completamente alle nostre pagine del server, quindi usiamo il colpo iniziale per il layout predefinito html e usiamo viste fortemente tipizzate per avviare alcuni modelli o collezioni. Il nostro layout javascript rispecchia approssimativamente il layout delle nostre viste laterali del server, abbiamo cartelle per ogni sezione: contratti, prodotti, utenti. Ogni cartella contiene i modelli, le viste e i modelli per ogni sezione. Fatemi sapere se avete domande o dubbi più specifici. – MrGrigg

+0

Vedi anche: http://stackoverflow.com/a/7711294/48082 – Cheeso

risposta

4
  1. non siete veramente rottamazione del V, si sta solo cambiando è la rappresentazione da HTML a JSON. Sei turbato perché ti senti più a tuo agio con le cose del server, e questo non è davvero un problema valido ... avrai fatto ciò che deve essere fatto, e imparerai/creerai i pattern di Javascript man mano che procedi.

  2. Questo è un modo per farlo, ed è davvero utile se hai bisogno di un fallback disabilitato per JavaScript o sei vincolato dalle linee guida per l'accessibilità. La parte che ti manca è che dovrai re-renderizzare la pagina una volta caricata per collegare i tuoi modelli agli elementi DOM. In alternativa puoi usare uno strumento che gestisce questa mappatura per te, ma questa è una complessità aggiuntiva che dovrai valutare da sola.

Nell'uso carriere di spina dorsale, non sono tenuti a sostenere scenari javascript-di meno, e noi quindi dobbiamo solo caricare i modelli + js sul carico iniziale, poi lasciare che il router prendere in consegna e usare qualcosa di più come la tua prima idea Poiché sembra che tu stia iniziando, la cosa più grande che ci ha aiutato a muoverci davvero è stato rendersi conto che è modo più facile apportare modifiche al tuo modello e quindi lasciare che le tue viste si iscrivano agli eventi di cambio modello (invece del contrario in giro).

+1

Completamente d'accordo, nel punto ** 1 ** stai ancora mantenendo il 'V'. Inoltre, è d'accordo che dobbiamo accettare la rinuncia a qualsiasi aiuto linguistico lato server nella nostra applicazione Backbone nello stesso modo in cui dovremmo farlo in un'applicazione iPhone che interagisce con il nostro livello applicazione server-side. – fguillen

1

Non so cosa sia la Via Accettata, ma ho trovato problematico combinare V dal lato server e poi intrecciare Backbone (etc). In situazioni molto controllate può funzionare, ma se il tuo l'app sarà estremamente pesante sul lato client, il mio suggerimento sarebbe quello di dimenticare il rendering sul lato server e solo restituire JSON e lasciare che Backbone gestisca il rendering dei tuoi contenuti attraverso una sorta di template (Moustache, ecc.).

Sì, hai il pieno controllo degli eventi Backbone, così avrai una maniglia su di loro per fare ciò che desideri.

Ti sento di rinunciare a parte delle tue competenze sul lato server. Ero allo stesso modo, ma se questo è ciò che richiede il tuo progetto, penso che troverai più facile lasciare che il rendering sul lato server vada per questo.

Buona fortuna!