2012-01-16 27 views
12

Ho cercato di imparare Node.js per alcuni giorni, ma c'è una cosa di cui sono confuso.Node.js: Templating sul lato client Modellazione lato server v/s

Qual è la differenza tra una soluzione di templazione lato client come i modelli JQuery e una soluzione lato server come Jade per Node.js?

Quali sono gli usi per ciascuno? Dove sono usati? Possono essere usati insieme? Esiste un examp di entrambi usati insieme in questo caso?

Non riesco proprio a capirlo. Sarebbe bello avere una panoramica delle cose di qualcuno qui intorno ...

risposta

27

La cosa più importante da considerare sul modello lato client o sul lato server è che il modello sul lato client non funzionerà se JavaScript è disabilitato su il cliente per qualsiasi motivo.

Altrimenti non è una grande differenza. Dipende principalmente dal fatto che si desideri generare il markup sul server o sul client.

Un motivo tipico per utilizzare i modelli sul lato client è se si dispone di un'applicazione che carica più dati dal server utilizzando ajax, websocket o simili. In tal caso, si potrebbe desiderare di avere un modello lato client per il rendering dei dati appena caricati.

Ad esempio:

In un'applicazione che ho scritto, ho usato EJS modelli sul server per generare il markup di base: la testa, il corpo, piè di pagina, ecc - i contenuti che non cambia.

L'applicazione utilizza socket.io, che invia al client alcuni eventi e dati dal server. Per visualizzare questi dati, ho utilizzato il template sul lato client di Knockoutjs.

Quindi nel mio caso è un approccio ibrido. Il motivo per cui l'ho fatto è perché il markup che ho generato sul server mostrerà immediatamente una volta caricata la pagina. I dati che provengono da socket.io potrebbero anche essere stati resi in HTML sul server, ma ciò richiederebbe più larghezza di banda da inviare rispetto all'invio di oggetti JSON semplici o simili, quindi ho deciso di renderli sul client.

Ovviamente avrei potuto utilizzare un modello lato client per l'intero sito, ma non ho visto alcun vantaggio nel rendering delle parti statiche sul client. Avrebbe reso più complicato il codice lato client della mia applicazione.

Problemi correlati