Krása dojo.require()

Poslední čtyři měsíce pracuji s Dojo na plný úvazek a jednou z mých oblíbených částí sady nástrojů je systém dojo.require. Systém dojo.require vám umožňuje asynchronně požadovat moduly Dojo v rámci aktuální stránky, aniž byste museli upravovat své základní sestavení Dojo nebo museli jít ven a stáhnout si daný plugin. dojo.require je poměrně komplexní, ale chtěl jsem vám dát ochutnat dojo.require a jak to funguje na velmi základní úrovni.

Krok 1: Vytáhněte dojo z CDN

<!-- pull from Google -->
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js" type="text/javascript"></script>
<!-- OR pull from AOL -->
<script src="http://o.aolcdn.com/dojo/1.5/dojo/dojo.xd.js" type="text/javascript"></script>

Základní soubor JavaScriptu Dojo můžete stáhnout z Googlu nebo AOL. Tento soubor je velmi malý a načítá se extrémně rychle z CDN.

Krok 2: dojo.require

Jak již bylo zmíněno dříve, metoda dojo.require asynchronně požaduje třídy Dojo z cesty modulu. Dojo je dostatečně chytré na to, aby bylo schopno požádat o své třídy z CDN, i když jde o více domén. Pokud chcete, můžete změnit cesty modulu, ale to je mimo rozsah tohoto příspěvku. Řekněme, že chci na své stránce použít třídu chování Dojo. Prvním krokem je „vyžadování“:

dojo.require('dojo.behavior');

Příkaz Vyžadovat vyvolá požadavek na danou třídu z CDN. S funkčností této třídy samozřejmě nemůžete nic dělat, dokud se nenačte, takže musíte přidat obal dojo.ready, který se nespustí, dokud se nenačtou všechny požadavky a není připraven DOM:

//equivalent to jQuery's document.ready and MooTools' window.addEvent('domready')
dojo.ready(function() {
	
	//this only executes when my "requires" have loaded!
	dojo.behavior.add({
		'a.alert': {
			onclick: function(e) {
				alert('You clicked me!');
			}
		}
	})
	
});

Výložník! Třída chování se načetla a nyní jste připraveni ji použít!

Další skvělá část o dojo.require je, že protože každá třída musí definovat moduly, které vyžaduje, jsou automaticky vyžadovány závislosti, když požadujete třídu. Předpokládejme například, že chci použít třídu z knihovny grafů DojoX. Manuálně požaduji jednorázovou třídu, ale Dojo je dostatečně chytrý, aby zjistil, že potřebuji mnohem víc:

//I manually type this...
dojo.require('dojox.charting.widget.Chart2D');
//...but Dojo internally knows to also require more classes that help charting...

Firebug vám přesně řekne, které třídy závislostí se získávají z CDN:

Systém požadavků Dojo je naprosto skvělý; desetinásobně urychluje vývoj. Pokud jde o produkci, je však nejlepší použít systém sestavení Dojo k vytvoření jednoho statického sestavení JavaScriptu pro účely rychlosti a ukládání do mezipaměti. Pro vývoj je však dojo.require dar z nebes!