Supposons que nous souhaitons utiliser le module node de YUI 3.x (permet de manipuler le DOM) dans notre page web. Pour que ce module fonctionne il faut disposer dans la même pages de toutes ses dépendances, ce qui donne :
<!-- inclure le cœur YUI 3.x --> <script type="text/javascript" src="../../build/yui/yui.js"></script> <!-- inclure les dépendances du module node --> <script type="text/javascript" src="../../build/oop/oop.js"></script> <script type="text/javascript" src="../../build/event/event.js"></script> <script type="text/javascript" src="../../build/dom/dom.js"></script> <script type="text/javascript" src="../../build/node/node.js"></script>
En plus vous devez inclure votre propre code javascript dans le page, permettant d'utiliser le module node, ce qui donne :
var elem = YUI().get('#demo');
Comme vous pouvez le voir cela alourdi significativement votre page, alors qu'on n'a utilisé qu'un seul module. Si vous souhaitez utiliser un autre module, il faudra faire le même travail tout en faisant attention à ne pas inclure deux fois la même dépendance, pourquoi ? Parce que plusieurs dépendances sont partagées entre plusieurs modules.
Comme expliqué dans les section précédentes, YUI 3.x fournie un utilitaire appelé Loader permettant de gérer dynamiquement les modules et leurs dépendances. Voyons comment cela marche, prenons le même exemple que précédemment, nous souhaitons utiliser le module node. Cette fois, pour que ce module fonctionne, il faut installer YUI 3.x sur notre page :
<!-- inclure le cœur YUI 3.x --> <script type="text/javascript" src="../../build/yui/yui.js"></script>Et puis écrire notre propre code permettant de l'utiliser le module node dynmaiquement, ce qui donne :
YUI().use('node' , function (Y) {
var elem = Y.get('#demo');
})
Explication, on crée une instance YUI YUI() ...on lui demande de charger le module node
.use('node', ... Et enfin on lui demande d'exécuter notre code javascript utilisant le module en question... , function (Y) {
var elem = Y.get('#demo');
})
YUI().use('*' , function (Y) {
})
YUI({
modules : {
'yui2-yde': {
fullpath: "http://yui.yahooapis.com/2.5.2/build/yahoo-dom-event/yahoo-dom-event.js"
},
'yui2-calendarcss': {
fullpath: "http://yui.yahooapis.com/2.5.2/build/calendar/assets/skins/sam/calendar.css",
type: 'css'
},
'yui2-calendar': {
fullpath: "http://yui.yahooapis.com/2.5.2/build/calendar/calendar-min.js",
requires: ['yui2-yde', 'yui2-calendarcss']
} ,
'jquery' : {
name :"jquery",
type :"js",
fullpath :"http://yoja-web.com/dev/build/plugins/jquery/jquery.js"
},
'votrescript1' : {
name :"votrescript1",
type :"js",
fullpath :"http://www.votresite.com/votrescript1.js"
requires: ['jquery'']
}
}
}).use('yui2-calendar', 'votrescript1 ', function (Y) {
//Le calendrier 'yui2-calendar' est disponible, ainsi que ses dépendances
//le module CSS 'yui2-calendarcss' et le script 'yui2-yde'
//Votre script 'votrescript1' est disponible, ainsi que JQuery
//chargé comme dépendance de 'votrescript1'
})
Vous pouvez mettre le contenu de l'exemple dans un autre script qu'on appellera votreScript2.js, l'inclusion dans votre page se reduit à ce qui suit :
<!-- inclure le cœur YUI 3.x --> <script type="text/javascript" src="../../build/yui/yui.js"></script> <!-- inclure votre script 2 --> <script type="text/javascript" src="http://www.votresite.com/votrescript2.js"></script>