Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Dojo
Dojo Forum d'entraide sur le framework Dojo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2012, 14h45   #1
Invité de passage
 
Homme
Inscription : mars 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mars 2011
Messages : 3
Points : 0
Points : 0
Par défaut Documentation directive define

Bonjour,

Tous les modules dojo commencent par define(...
Je cherche la documentation de cette directive dans tous mes livres, sur le net etc... impossible d'avoir la moindre info!

Quelqu'un pourrait-il m'éclairer ou me donner un lien qui me permettrait de répondre à cette question.

Merci d'avance.

Caplande
Caplande est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 17h24   #2
Expert Confirmé
 
Avatar de emmanuel.remy
 
Emmanuel REMY
Inscription : novembre 2005
Messages : 2 844
Détails du profil
Informations personnelles :
Nom : Emmanuel REMY
Âge : 43

Informations forums :
Inscription : novembre 2005
Messages : 2 844
Points : 3 589
Points : 3 589
Par défaut Ajout exemple de code

Salut,

A partir de la 1.7 Dojo utilise AMD comme loader pour les modules.

On dispose alors de deux fonctions globales qui permettent le chargement des modules: require et define. Leur objet est de charger les modules et de les mettre à disposition quand ils sont prets (intéret: pouvoir charger les modules en mode asynchrone).
Require est là uniquement pour le chargement des modules (donc sasn retourner devaleur), alors que define permet lui de "définir" un module (en TRES gros, define permet de définir des objets) car il renvoie une valeur.

Tu trouveras des infos ici pour le loader AMD et ici pour le ici pour la création d'objet (la création d'objet s'appuie sur define mais est surtout le fait de dojo.declare.

A noter qu'un module est chargé une seule fois (heureusement...) même s'il semble que tout ne soit pas limpide à ce niveau là dans des cas particuliers.

Code :
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
40
41
42
43
44
45
 
// code pris de la doc dojo
// in my/Person.js
define(['dojo/_base/lang', 'dojo/_base/declare'], function(lang, declare){
  return declare(null, {
    constructor: function(name, age, residence){
      this.name = name;
      this.age = age;
      this.residence = residence;
    }
  });
});
 
 
//ou (perso je préfère, je trouve ça plus clair)
define(['dojo/_base/declare'], function(declare){
  var Person = declare("my.Person",null, {
    constructor: function(name, age, residence){
      this.name = name;
      this.age = age;
      this.residence = residence;
    }
  });
  return Person;
});
 
 
//mais cela pourrait être aussi cette version qui donne du coup un code 
//dojo compatible avec les anciennes versions
define(['dojo'], function(dojo){
  var Person = dojo.declare("my.Person",null, {
    constructor: function(name, age, residence){
      this.name = name;
      this.age = age;
      this.residence = residence;
    }
  });
  return Person;
});
 
// autre part, on demande le chargement du module my/Person, dont le 
// resultat sera transmis au paramètre Person dans la fonction
require(['my/Person'], function(Person){
  var folk = new Person("phiggins", 42, "Tennessee");
});

ERE
__________________
Quand une tête pense seule, elle devient folle.
emmanuel.remy est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h20.


 
 
 
 
Partenaires

Hébergement Web