2011-12-16 25 views
6

Estoy aprendiendo sobre el motor de plantillas que Jade incluye con Express. Según tengo entendido, Jade permite la representación de en el lado del servidor. No es eso subóptimo por dos razones:¿Tiene sentido renderizar plantillas del lado del servidor?

1) El servidor tiene que calcular más para representar las plantillas. El trabajo puede ser empujado al lado del cliente.

2) Una vez que se ha procesado una plantilla o parcial, y los datos necesitan actualización, simplemente envía JSON al cliente, en lugar de reenviar HTML completo, que es un gasto de ancho de banda.

¿Son estos problemas reales con la representación de la plantilla del lado del servidor?

Respuesta

7

Creo que realmente depende del tipo de aplicación que está escribiendo. Si tiene una página que sirve principalmente páginas individuales, y que se adapta a su molde CRUD/MVC típico, puede que no sea un problema. Sin embargo, si estás escribiendo algo dinámico con una tonelada de ajax, es un problema :-)

Siento tu dolor - He sido mordido por esto unas cuantas veces en varias pilas. Terminé haciendo todos mis enlaces de lista con llamadas asincrónicas en el navegador que se ejecuta después de que se cargue la página principal. Es algo que apesta, porque te gusta esa primera solicitud para que venga con una página de datos de lista pre-enlazados, pero la página subsiguiente será impulsada por llamadas ajax. Simplemente no quiero escribir cosas de plantilla una vez para el servidor y una vez para el cliente.

No creo/Jade admite ese tipo de vinculación del lado del cliente. La buena noticia es que hay algunos lenguajes de plantillas populares que funcionan tanto en el servidor como en el navegador. Los dos que conozco son:

no he visto a nadie usando placas con expreso, ya que forma parte del proyecto flatironjs qué tipo de cuenta su propio marco de crecimiento está en marcha. Hay un montón de ejemplos que hay de usar bigote y ejs con expreso:

En una nota lateral, he aquí una lista de los paquetes de plantillas para el nodo en el sitio de Joyent:

https://github.com/joyent/node/wiki/modules#wiki-templating

Mi sugerencia es comenzar con EJS - que es un poco más a la tierra con su sintaxis no HAML-esque, admite el enlace de cliente y servidor, y parece ser bien aceptado en la pila exprés.

Happy Coding!

+0

Gracias, eso fue útil. Por "enlaces de lista", ¿te refieres a "poblar con datos"? Además, parece sugerir que solo trabaja con plantillas del lado del cliente, de modo que no es necesario reescribirlas para el servidor. Entonces, ¿por qué seleccionó lenguajes de plantillas que funcionan tanto en el cliente como en el servidor? – Randomblue

+0

Cuando digo bindings de lista, me refiero a hacer una solicitud de una lista de datos (generalmente json/xml, paginado), aplicar esa estructura de datos a una plantilla y representar el html para el cliente. No estoy sugiriendo que solo use plantillas del lado del cliente; la razón por la que señalé las que funcionan en ambos es que me gusta tenerlas disponibles en ambos casos. –

+0

Por ejemplo, me gusta tener una plantilla para un elemento de lista en un repetidor. Usar esto en el cliente funciona muy bien: solicita una página de datos y la vincula en el cliente. ¿Qué sucede cuando quiero usar la misma plantilla en un encabezado de página? Seguramente no voy a hacer una solicitud de HTTP solo para esa información de encabezado, pero no quiero escribir la misma plantilla nuevamente solo para este uso. Aquí es donde las plantillas de doble propósito se vuelven increíbles. (perdón por la publicación súper larga) –

1

Hay otro punto importante. Dependiendo del objetivo de su sitio web. Puede que tenga que prestar atención a SEO o no.

En palabras simples, el contenido que se genera desde el servidor está indexando por el motor de búsqueda. Otros no. Porque los rastreadores de motores de búsqueda no se preocupan por el contenido del lado del cliente.

+1

El bot de Google ahora ejecuta JavaScript, por lo que el contenido del lado del cliente puede ser indexado por Google. – Matt

Cuestiones relacionadas