Semaine du 25/01/10: Zoom sur dojo.xd.js
Quasiment tous les codes fournis sur ce forum font référence à la bibliothèque Dojo sur ce modèle de code bien connu:
<script type="text/javascript" src="/dojo_1.4/dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true"></script>
(Ce qui d'ailleurs oblige généralement à changer les paths pour tester
)
Mais savez vous que Google et AOL hébergent les librairies de Dojo et offrent ainsi un lien "universel", qui de plus est ultrarapide et permet une mise en cache. Evidemment cette liaison externalisée peut avoir des impacts (localisation des widgets et librairies personnels, etc...), mais depuis la version 1.3 de Dojo le "loader" a été revu pour avoir une structure semblable entre les deux modes d'accès aux ressources (c'est notamment un des rôles de l'attribut dojo.baseUrl).
Pour bénéficier de cette architecture, on oublie dojo.js et on fait alors référence à un fichier Dojo dojo.xd.js, Xd signifiant "XDomain".
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js" djConfig="isDebug: true, parseOnLoad: true"></script>
ou encore:
<script type="text/javascript" src="http://o.aolcdn.com/dojo/1.4/dojo/dojo.xd.js"></script>
Pour être complet, notez qu'il en va de même pour les CSS fournies:
1 2 3
| <style type="text/css">
@import "http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojox/widget/Loader/Loader.css";
</style> |
Testez par exemple ce code travaillé dernièrement sur le forum, en effectuant un simple copier-coller :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <html >
<head>
<title>Dojo XDomain</title>
<style type="text/css">
@import "http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojox/widget/Loader/Loader.css";
@import "http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dijit/themes/tundra/tundra.css";
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js"
djConfig="isDebug:true, parseOnLoad: true"></script>
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.require("dojox.widget.Loader");
dojo.require("dijit.form.Button");
dojo.ready(function() {
loader = new dojox.widget.Loader({loadMessage: "Simulation de Chargement du chart"});
});
</script>
</head>
<body class="tundra">
<button dojoType="dijit.form.Button" onClick="doJob();">3 secondes</button>
<script type="text/javascript">
function renderChart() {}
function doJob()
{
loader._show();
renderChart();
//pour la simulation
setTimeout('loader._hide()', 3000);
}
</script>
</body>
</html> |
Notez une chose fondamentale: étant donné que le téléchargement n'est pas synchrone dans notre cas (dojo.xd.js va charger au fil de l'eau les librairies demandées), il est impératif de commencer à travailler le code dojo (création d'objets,etc ...) à partir de dojo.addOnload ou dojo.ready (en v1.4, c'est un alias du précédent).
Bon dev,
ERE
Partager