You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Il nous permet de ne pas pourrir notre scope globale. En Javascript un scope est défini au niveau des fonctions. Pour éviter que nos variables arrivent dans le scope globale, il suffit de wrapper notre code autour d'une fonction et de l'exécuter tout de suite après.
18
+
19
+
Il nous permet de ne pas pourrir notre scope global. En Javascript un scope est défini au niveau des fonctions. Pour éviter que nos variables arrivent dans le scope globale, il suffit de wrapper notre code autour d'une fonction et de l'exécuter tout de suite après.
19
20
20
21
{% highlight javascript %}
21
22
(function(){
22
23
var private = 'I am private, the global scope is free of me !';
23
24
24
25
function iAmPrivateToo(){
25
-
return 'This function is private and will not be avalaible via the global scope !'
26
+
return 'This function is private and will not be available via the global scope !'
Maintenant que nous savons isoler notre code, nous devons le découper pour éviter de se retrouver avec un seul gros fichier.
34
+
35
+
Maintenant que nous savons isolé notre code, nous devons le découper pour éviter de se retrouver avec un seul gros fichier.
34
36
35
37
A partir du moment où l'on découpe notre code, nous allons avoir besoin d'exporter des fonctions et des attributs publiquement dans une variable globale (ça va une seule, on ne crie pas au scandale tout de suite).
36
38
37
39
{% highlight javascript %}
38
40
// script1.js
39
41
(function(){
42
+
43
+
// if window.myApp does not exist, create it with an empty object
44
+
// multiple = are allowed in JS
45
+
// `var a = a || {};` is often used in JS, it means `var a or= {}`
40
46
var myApp = window.myApp = window.myApp || {};
41
47
42
48
var aPublicVariable = 'I am public, yeahhh';
@@ -92,6 +98,10 @@ Gestion des dépendances avec RequireJS
92
98
93
99
C'est à ce moment que je commence à vous parler de RequireJS.
94
100
101
+
RequireJS a été créé par [James Burke](https://github.com/jrburke), pour
102
+
DOJO. Mais finalement, cette librairie à été séparé du projet initial pour
103
+
devenir framework agnostique. Merci James ;)
104
+
95
105
RequireJs va vous permettre de faire :
96
106
97
107
* de l'encapsulation (visibilité public / privée )
@@ -130,7 +140,7 @@ define(
130
140
}
131
141
)
132
142
133
-
/* bootstrap.js qui utilise la dépendance defini ci dessus. */
143
+
/* bootstrap.js qui utilise la dépendance definie ci dessus. */
134
144
require({
135
145
paths: {
136
146
jquery: 'js/libs/jquery-1.7.1.min',
@@ -231,6 +241,21 @@ Normalement nous aurions pu faire appel à jquery via son chemin complet :
231
241
232
242
C'est le rôle de la configuration `paths: { jquery: 'js/libs/jquery-1.7.1.min', }`. RequireJS va remplacer chaque dépendance `jquery` par son chemin réel afin de trouver la librairie.
233
243
244
+
#### RequireJS et jQuery
245
+
246
+
Depuis jQuery 1.7, le support de AMD (RequireJS est un implémentation de AMD) à été ajouté.
247
+
248
+
Pour les versions précédentes il existe une version de RequireJS qui
Une [issue](https://github.com/documentcloud/backbone/pull/710) est un cours sur github pour que ce fork soir mergé avec
258
+
Backbone.
234
259
235
260
### Intégrer RequireJS dans notre HTML
236
261
@@ -252,7 +277,7 @@ le head et le navigateur les chargera automatiquement. Si la dépendance
252
277
est nécessaire plusieurs fois, RequireJs a l'intelligence de ne la
253
278
récupérer qu'une seule fois.
254
279
255
-
Maintenant lorsque nous naviguons sur notre site, le navigateur télécharge RequireJS, le bootstrap, et toute les dépendances.
280
+
Maintenant lorsque nous naviguons sur notre site, le navigateur télécharge RequireJS, le bootstrap, et toutes les dépendances.
256
281
257
282
258
283
### Optimiser les ressources
@@ -293,16 +318,16 @@ C'est pour répondre à cette problématique que le script de build r.js peut ê
293
318
294
319
### RequireJS sur mobile
295
320
296
-
Sur mobile on a toujours des contraintes des tailles. Nous ne voulons surtout pas charger de librairies inutilement. Du fait que nous avons utilisé la structuration AMD (Asynchrnous Module Definition) dans notre code, nous sommes obligé d'utiliser une implementation AMD pour lancer notre application et RequireJs n'est pas la seule implémentation existante.
321
+
Sur mobile on a toujours des contraintes des taille. Nous ne voulons surtout pas charger de librairies inutilement. Du fait que nous avons utilisé la structuration AMD (Asynchrnous Module Definition) dans notre code, nous sommes obligé d'utiliser une implementation AMD pour lancer notre application et RequireJs n'est pas la seule implémentation existante.
297
322
298
-
Actuellement il en existe plusieurs dont 3 que j'ai testées personnellement.
323
+
Actuellement il en existe plusieurs dont 3 que j'ai testé personnellement.
299
324
300
325
* Almond la plus petite (mois de 1Ko gzippé) ne fait pas de chargement dynamique; tous les modules doivent être contenu dans un seul fichier. Elle fonctionne très bien en complément du script builder r.js. Comme tout le code est groupé en un seul fichier, Almond peut faire son travail. Almond est la solution privilégiée sur mobile.
301
326
* Curl.js qui est deux fois moins gros que RequireJs et peut être une bonne alternative si vous avez besoin de chargement dynamique de code.
302
327
303
328
Par contre, sur des projets un peu gros, souvent RequireJS est le seul à s'en sortir.
304
329
305
-
Et voici une comparaisons des implémentations en terme de taille
330
+
Et voici une comparaison des implémentations en terme de taille
@@ -321,7 +346,7 @@ Si vous utilisez Almond qui ne fait pas de chargement dynamique, vous aurez beso
321
346
Pour cela vous pouvez :
322
347
323
348
* soit utiliser [httpBuild](https://github.com/jrburke/r.js/blob/master/build/tests/http/httpBuild.js) afin de toujours compiler en dev vos assets RequireJS côté serveur (utilise nodejs)
324
-
* soit utiliser les fonctionnalité de [has avec RequireJS](http://requirejs.org/docs/optimization.html#hasjs) : [exemple](https://github.com/alankligman/gladius/blob/develop/src/gladius.js)
349
+
* soit utiliser les fonctionnalités de [has avec RequireJS](http://requirejs.org/docs/optimization.html#hasjs) : [exemple](https://github.com/alankligman/gladius/blob/develop/src/gladius.js)
325
350
326
351
### Stop au JS dans les HTML et à l'HTML dans les JS
0 commit comments