Bonjour,

Je dois utiliser un outil de reporting (IBM Cognos Analytics, pour le nommer) qui permets d'intégrer - dans des rapports au format HTML - des librairies "externes" (autres que les objets mis a disposition par Cognos donc), donc par exemple jQuery, jQueryUI, et même des trucs comme D3.js, etc, etc.. en fonction du besoin et de la "créativité".
Cette fonctionnalité est officielle, et elle passe par le fait que Cognos se base sur requireJS + un "protocole" a suivre pour intégrer du code JS "custom".
Les fichiers référencés doivent tous être basés sur le structure suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
define(['https://our_site/blabla/someFolder/someResource.js'], function() {
 
        /*
        A) - je m'attends à ce que tout ce qui est ici ne soit executé que lorsque "someResource.js" a été loadé!
       */
 
	function monModule() { };
 
	monModule.prototype.setData= function() { 
		/*
                B) - en fonction des besoins, du code qui va être executé lorsque l'on récupére des données dans l'outil de reporting
                */
	};		
 
	monModule.prototype.draw= function(o) { 
		/*
                C) -  du code afin de faire tout ce qui est nécessaire, par ex. créer des éléments qui seront affichés dans le body de la page, etc, etc..
                */
	};
 
	return myObject;
});
Pour info uniquement, les fonctions "setData" et "draw" font partie de la structure requise par l'outil de reporting, sinon, il rejette. Mais je ne pense pas que cela soit la question.

Mon point est:
- Ma compréhension actuelle de "define" dans requireJS est que le code qui va être executé ne le sera uniquement que lorsque la ressource mentionnée dans "define" aura été loadée.
Donc en reprennant mon exemple de code ci-dessus, le code illustré en point C) ou A) ne pourra être executé que lorsque "someResource.js" est loadée.
=> est-ce correct? Ou je passe à côté de qqchose (?) ...

Je demande cela parcequ'évidemment, j'ai un souci. Du genre un collègue* qui donc doit loader jQuery et DataTable.js, et qui se retrouve (lorsque c'est la première fois que quelqu'un fait tourner le truc ou bien si le cache a été vidé) avec une erreur du genre "DataTable(..) doesn't exist..etc..". Donc comme si le code en C) avait été évalué / executé avant même que la ressource ne soit loadée / disponible.
"Marrant", il suffit que la page soit rechargée (et tant que cache pas vidé) pour que le problème disparaisse.
Ca cloche avec ce que je croyais avoir pigé de requireJS.
Avais-je tord? Ou est-ce que l'on se plante?

Merci d'avance!
@+


*: et je me mets dessus aussi, parceque j'étais censé être le prochain a utiliser de ce truc et j'ai pas envie d'être dans la merde