Ho intenzione di iniziare con una pagina completamente vuota (nessun elemento diverso da html, testa e corpo) e quindi creerò la pagina usando jQuery. Il contenuto della pagina sarà sotto forma di JSON da una richiesta AJAX. I contenuti di JSON non avranno alcun HTML. L'HTML con contenuto verrà creato per diverse sezioni della pagina a seconda della struttura dell'oggetto JSON.jQuery efficienza di manipolazione DOM - creazione di un'intera pagina con JavaScript
Questa pagina avrà vari slider, modali e altri contenuti "dinamici".
La mia domanda è, sarà più veloce (si consideri IE7 come il minimo comune denominatore) per creare l'HTML come una stringa di grandi dimensioni (utilizzando un generatore di stringhe che è molto più veloce della concatenazione standard) e iniettarlo nel corpo in un modo di massa, cioè
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)
e poi quando cioè nel DOM, utilizzare jQuery per trovare e applicare plugin per le varie parti dinamiche, cioè
$("#slider").sliderPlugin(options);
O
Sarebbe meglio creare ogni elemento (o alcuni) come una variabile, quindi aggiungere al corpo? cioè
var content = $('<div/>', {id: "content"})
var slider = $('<div/>', {id: "slider", html="<ul><li>...</li></ul>"}).appendTo(content);
$('body').append(content)
poi con questo approccio non ho per interrogare il DOM, devo solo fare questo:
slider.sliderPlugin(options);
Perché dovresti farlo?Se hai intenzione di emettere il markup come variabile stringa in javascript, perché non crearlo nel corpo? – tvanfosson
Non vedo il punto in "perché vorresti fare queste" domande. Ma, per riassumere, le restrizioni della piattaforma, il contenuto JSON è modificabile, quindi JSON diverso = output di pagine diverse, il markup non è contenuto in JSON, solo il contenuto di ogni area della pagina, il markup viene generato a seconda della strucutre JSON. In futuro questo consente di utilizzare markup diversi per lo stesso JSON, quindi il layout può essere aggiornato senza riformattare il contenuto sorgente. – Fergal
Abbastanza giusto. Ero solo curioso. Fornirei probabilmente viste HTML parziali tramite AJAX anziché JSON e costruirò l'HTML dal modello sul server. Suppongo, tuttavia, che ci siano casi in cui il server di dati non è lo stesso del server web. Ho appena scoperto che costruire HTML da stringhe è piuttosto noioso e soggetto a errori. Potresti prendere in considerazione l'utilizzo di http://knockoutjs.com – tvanfosson