En un sitio de comercio electrónico, al agregar un artículo a un carrito, me gustaría mostrar una ventana emergente con las opciones que puede elegir. Imagina que estás pidiendo un iPod Shuffle y ahora tienes que elegir el color y el texto para grabar.
Me gustaría que la ventana sea modal, por lo que estoy usando una caja de luz poblada por una llamada Ajax. Ahora tengo dos opciones:
Opción 1: envíe solo los datos y genere el marcado HTML usando JavaScript
Lo bueno de esto es que reduce la solicitud de Ajax al mínimo de oso y no mezcla los datos con el marcado.
Lo que no es tan bueno de esto es que ahora necesito usar JavaScript para hacer mi renderizado, en lugar de tener un motor de plantillas en el lado del servidor. Podría ser capaz de limpiar un poco el enfoque utilizando una solución de plantillas del lado del cliente .
Opción 2: enviar el marcado HTML
Lo bueno de esto es que puedo tener el mismo motor de plantillas del lado del servidor que estoy usando para el resto de mis tareas de representación (Django), hacer la representación de la caja de luz. JavaScript solo se usa para insertar el fragmento HTML en la página. Por lo tanto, deja claramente la representación al motor de representación. Tiene sentido para mi.
Pero no me siento cómodo mezclando datos y marcas en una llamada de Ajax por alguna razón. No estoy seguro de qué me hace sentir incómodo al respecto. Quiero decir, es la misma forma en que se sirve cada página web: datos más marcado, ¿verdad?
Respuestas:
JSON solo debe contener los datos y ningún marcado. A la larga, este enfoque es más extensible porque existe la posibilidad de utilizar los datos JSON en otras partes de su sitio. Si incluye marcado, usar los mismos datos para llenar otra plantilla se vuelve mucho más difícil.
fuente
Enviaría los datos en la solicitud y construiría el marcado en js. Un beneficio adicional sería que habría menos uso de ancho de banda. Es una especie de preferencia personal, pero mantener el marcado del lado del cliente alejado del lado del servidor es probablemente una mejor idea. También tengo un sitio web de Django y solo uso el sistema de plantillas para poner algunas variables json en la página (una menos ajax requerida para hacer) y usar archivos src cuando desarrollo en mi máquina. Todo el lado del cliente se realiza con ExtJS.
fuente
Creo que has hablado sobre los pros y los contras de ambos. ¿Por qué no mirar una tercera opción de generar el javascript para su lightbox desde una vista de django? ¿Entonces su JSON solo contiene los datos para actualizarlo para cada vista?
Lo que debería poder hacer es envolver todo el código de plantilla en variables de JavaScript y luego generarlas con JavaScript después de recibir la solicitud JSON en el lado del cliente.
fuente
Debe usar el motor de plantillas para el marcado y mantener un campo oculto en algún lugar para almacenar valores, que luego puede encontrar en el documento utilizando un selector.
fuente