Deprecated content

Left here for the record

Optymalizacja JS

Zbyszek Tenerowicz
meet.js 12.10.2011

Agenda

optymalizacja w jQuery

Znaj swoje selektory

$('.klasa');   $('#id .klasa');
$('div#id');  $('#id'); 
     $('ul>li'); //li w tym ul, ale żadne poniżej

optymalizacja w jQuery

Ceń swoje selektory

$('a.klasa').attr('src','http://html5rocks.com');
$('a.klasa').show(); 

//chaining
$('a.klasa').attr('src','http://html5rocks.com').show();

//zachowanie selektora na później
var $klasa=$('a.klasa');
$klasa.attr('src','http://html5rocks.com');
...
$klasa.show();

optymalizacja w jQuery

$(this) nie jest za darmo

$('whatever').click(function(){
	this.id="noweid"; //można tak!
	var $t=$(this); //keszuj $(this)
	$t.children().hide();
	$t.addClass('small');	
	});

.live() jest fajne.

.delegate() jest fajne.

.on() jest fajne.

DOM API

DOM poza dokumentem - przykład

var node=document.createElement('div');
var p=document.createElement('p');
node.appendChild( p );
var tam=document.getELementById('#tu');
tam.insertBefore( node, tam.firstChild );

jQuery też to umie, jeśli nie piszesz od razu po dokumencie

var p=$('<p>');
var div=$('<div>');
for(var i=0;i<100;i+=1){
	div.append(p);
}
div.prependTo($('#tu'));

DOM DocumentFragment - przykład

//pożyczone z http://ejohn.org/blog/dom-documentfragments/
//elems zawiera kilka węzłów DOM
var div = document.getElementsByTagName("div");

var fragment = document.createDocumentFragment();
for ( var e = 0; e < elems.length; e++ ) {
  fragment.appendChild( elems[e] );
}

for ( var i = 0; i < div.length; i++ ) {
  div[i].appendChild( fragment.cloneNode(true) );
}

Wydajność składników języka

Niespodzianka

typedArray - szybkie przetwarzanie danych

JIT

Abusing method JIT

A zaczęło się na Falsy Values...

UI queue, runaway timer

Jak testować

Pobudka, to już koniec!