Voy a comenzar con una página completamente en blanco (sin elementos que no sean html, cabeza y cuerpo) y luego construir la página usando jQuery. El contenido de la página tendrá el formato de JSON de una solicitud de AJAX. Los contenidos de JSON no tendrán ningún HTML. El HTML con contenido se compilará para diferentes secciones de la página dependiendo de la estructura del objeto JSON.jQuery DOM manipulación de la eficiencia - creación de toda la página con JavaScript
Esta página tendrá varios controles deslizantes, modales y otro contenido "dinámico".
Mi pregunta es, ¿será más rápido (tome IE7 como el denominador común más bajo) construir el HTML como una cadena grande (utilizando un constructor de cadenas mucho más rápido que la concatenación estándar) e inyectar esto en el cuerpo en de forma a granel, es decir
var html = "<div id='content'><p>All markup required for the page, built from the contents of the JSON object</p></div><div id='slider'>...</div>...etc."
$("body").html(html)
y luego, cuando lo que hay en el DOM, utilizar jQuery para encontrar y aplicar plugins a las diversas partes dinámicas, es decir,
$("#slider").sliderPlugin(options);
O
¿Sería mejor crear cada elemento (o algunos) como una variable, y luego agregarlo al cuerpo? es decir
var content = $('<div/>', {id: "content"})
var slider = $('<div/>', {id: "slider", html="<ul><li>...</li></ul>"}).appendTo(content);
$('body').append(content)
entonces con este enfoque no tengo para consultar el DOM, lo único que tiene que hacer esto:
slider.sliderPlugin(options);
¿Por qué harías esto?Si va a emitir el marcado como una variable de cadena en JavaScript, ¿por qué no simplemente crearlo en el cuerpo? – tvanfosson
No veo el punto en "¿por qué harías esto?" Preguntas. Pero, para resumir, las restricciones de la plataforma, el contenido JSON es modificable, JSON diferente = salida de página diferente, el marcado no está contenido en JSON, solo el contenido de cada área de la página, el marcado se genera según la estructura de JSON. En el futuro, esto permite que se utilicen diferentes marcas para el mismo JSON, por lo que el diseño se puede actualizar sin reformar el contenido de origen. – Fergal
Bastante justo. Solo tenía curiosidad. Probablemente entregue vistas parciales de HTML a través de AJAX en lugar de JSON y construya el HTML del modelo en el servidor. Supongo, sin embargo, que hay instancias en las que el servidor de datos no es el mismo que el servidor web. Acabo de descubrir que construir HTML a partir de cadenas es bastante tedioso y propenso a errores. Es posible que desee considerar el uso de http://knockoutjs.com – tvanfosson