2012-01-16 6 views
12

He estado tratando de aprender Node.js durante unos días, pero hay algo de lo que estoy confundido.Node.js: Plantilla del lado del cliente v/s Plantilla del servidor

¿Cuál es la diferencia entre una solución de plantillas del lado del cliente como plantillas de JQuery y una solución del lado del servidor como Jade para Node.js?

¿Cuáles son los usos para cada uno? ¿Dónde se usan? Pueden ser usados ​​juntos? ¿Hay un examen de ambos siendo usados ​​juntos si es así?

No puedo entender esto. Sería bueno tener una visión general de las cosas de alguien de por aquí ...

Respuesta

27

Lo más importante que debe considerarse sobre la creación de plantillas del lado del cliente frente al lado del servidor es que la creación de plantillas del lado del cliente no funcionará si JavaScript está desactivado el cliente por las razones que sean.

De lo contrario, no es una gran diferencia. En general depende de si desea generar su marcado en el servidor o en el cliente.

Una razón típica para usar plantillas del lado del cliente es si tiene una aplicación que carga más datos del servidor usando ajax, websockets o similares. En tal caso, es posible que desee tener una plantilla del lado del cliente para representar los datos recién cargados.

Por ejemplo:

En una aplicación que escribí, utiliza las plantillas ejs en el servidor para generar el marcado básico: La cabeza, cuerpo, pie de página, etc. - contenido que no cambia.

La aplicación usa socket.io, que envía al cliente algunos eventos y datos del servidor. Para mostrar esta información, usé la plantilla del lado del cliente de Knockoutjs.

Entonces, en mi caso, es una especie de enfoque híbrido. La razón por la que lo hice así es porque el marcado que genero en el servidor se mostrará inmediatamente una vez que se cargue la página. Los datos que provienen de socket.io también podrían haberse procesado en HTML en el servidor, pero eso requeriría más ancho de banda para enviar que enviar objetos JSON simples o similares, así que opté por renderizarlos en el cliente.

Obviamente, podría haber usado una plantilla del lado del cliente para todo el sitio, pero no vi ningún beneficio en representar las partes estáticas en el cliente. Habría complicado el código del lado del cliente de mi aplicación.

Cuestiones relacionadas