Dynamiczne elementy DOM, które tworzą stronę i zmieniają się przy zastosowaniu AJAX’a można tworzyć na wiele sposób. Poniżej przedstawie trzy najczęściej przeze mnie używane i porównam je ze względu na wydajność. Testy zostały przeprowadzone na Firefox 3.0.3 na Ubuntu przy użyciu opcji Czas wykonania (ang. Profiler) z pluginu Firebug.

Przeczytaj także wpis Szybkie iteracje czyli przyspieszanie pętli oraz
Wydajne tworzenie elementów DOM C.D..

Na początek mamy link go, który będzie wywoływać każdą testowaną metodę. Metody wykonujemy jedna na raz i mierzymy czas wstawienia 1000 elementów listy li do ul od id list.


<a href="#" id="go">go</a>
<ul id="list"></ul>

1. Sposób

Wstawienie metodą insert elementów LI w pętli, które zostały stworzone przy pomocy silnika template z biblioteki Prototype.


$('go').observe('click',go1);
//Czas wykonania (2136.313ms, 84055 wywołań)
function go1(e){
	e.stop();
	$('list').update();
	var tpl = new Template ('<li class="#{class}" id="#{id}">#{id}</li>');
	$R(1, 1000).each(function(i){
		$('list').insert(tpl.evaluate({
			class: 'klasa',
			id: i
		}));
	})
}

Dom 1
Continue reading

Share

Prototypem zainteresowałem się niecały roku temu, kiedy okazało się, że w projekcie, w którym biorę udział ktoś musi się zająć Javascriptem.
Było to dla mnie spore wyzwanie, bo nigdy specjalnie się nim nie zajmowałem, a my chcieliśmy mieć od razu dość rozbudowaną aplikację. Wcześniej JS był traktowany jako prosty dodatek do HTMLa, w którym można było robić szalone bajery z kursu Pawła Wimmera.

W portalu w którym pracowałem do końca 2007 roku jako programista php i mysql, javascript był domeną webmasterów, którzy robili albo animowane menu albo tajemniczego ajaxa na milion różnych sposób. Każdy inaczej. Inną biblioteką. Ogólny chaos.

Podszedłem do tematu ambitnie czytając najpierw Ajax in Action. Bardzo dobra książka… z października 2005. Dało mi to ogólne pojęcie o temacie i spory ból głowy.

Wtedy zrobiłem pierwszą przymiarkę do nowo wydanego Prototype 1.6.0.2. Przyznaje się, że wiedziałem o istnieniu jQuery, ale wtedy “wpadła mi w ręce” świeżo wydana książka Prototype and script.aculo.us: You Never Knew JavaScript Could Do This! z doskonałej serii The Pragmatic Programmers.

Do tego wydrukowałem ściągę i wtedy czytając książkę popłynąłem…

Share