Skip to content

Commit be688e4

Browse files
committed
Fix typos + add RequireJS history
1 parent a8c7c2d commit be688e4

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

_posts/2012-01-04-requirejs.markdown

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,34 @@ Il existe plusieurs méthodes qui couvrent un spectre plus ou moins large des pr
1515
Module Pattern
1616
--------------
1717
<http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth>
18-
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.
1920

2021
{% highlight javascript %}
2122
(function(){
2223
var private = 'I am private, the global scope is free of me !';
2324

2425
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 !'
2627
}
2728
})()
2829
{% endhighlight %}
2930

3031
Object Litteral Pattern
3132
-----------------------
3233
<http://stackoverflow.com/questions/1600130/javascript-advantages-of-object-literal>
33-
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.
3436

3537
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).
3638

3739
{% highlight javascript %}
3840
// script1.js
3941
(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= {}`
4046
var myApp = window.myApp = window.myApp || {};
4147

4248
var aPublicVariable = 'I am public, yeahhh';
@@ -92,6 +98,10 @@ Gestion des dépendances avec RequireJS
9298

9399
C'est à ce moment que je commence à vous parler de RequireJS.
94100

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+
95105
RequireJs va vous permettre de faire :
96106

97107
* de l'encapsulation (visibilité public / privée )
@@ -130,7 +140,7 @@ define(
130140
}
131141
)
132142

133-
/* bootstrap.js qui utilise la dépendance defini ci dessus. */
143+
/* bootstrap.js qui utilise la dépendance definie ci dessus. */
134144
require({
135145
paths: {
136146
jquery: 'js/libs/jquery-1.7.1.min',
@@ -231,6 +241,21 @@ Normalement nous aurions pu faire appel à jquery via son chemin complet :
231241

232242
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.
233243

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
249+
intègre jQuery : <https://github.com/jrburke/require-jquery>
250+
251+
#### RequireJS et Backbone
252+
253+
Si vous voulez utiliser RequireJS avec Backbone, James Burke le créateur
254+
de RequireJS a créé un repo avec un version de Backbone compatible AMD :
255+
<https://github.com/jrburke/backbone/blob/optamd3/backbone.js>
256+
257+
Une [issue](https://github.com/documentcloud/backbone/pull/710) est un cours sur github pour que ce fork soir mergé avec
258+
Backbone.
234259

235260
### Intégrer RequireJS dans notre HTML
236261

@@ -252,7 +277,7 @@ le head et le navigateur les chargera automatiquement. Si la dépendance
252277
est nécessaire plusieurs fois, RequireJs a l'intelligence de ne la
253278
récupérer qu'une seule fois.
254279

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.
256281

257282

258283
### Optimiser les ressources
@@ -293,16 +318,16 @@ C'est pour répondre à cette problématique que le script de build r.js peut ê
293318

294319
### RequireJS sur mobile
295320

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.
297322

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.
299324

300325
* 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.
301326
* 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.
302327

303328
Par contre, sur des projets un peu gros, souvent RequireJS est le seul à s'en sortir.
304329

305-
Et voici une comparaisons des implémentations en terme de taille
330+
Et voici une comparaison des implémentations en terme de taille
306331

307332
$ ls -l
308333
-rw-r--r-- 1 romain users 925 29 nov. 15:41 almond.min.js.gz
@@ -321,7 +346,7 @@ Si vous utilisez Almond qui ne fait pas de chargement dynamique, vous aurez beso
321346
Pour cela vous pouvez :
322347

323348
* 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)
325350

326351
### Stop au JS dans les HTML et à l'HTML dans les JS
327352

0 commit comments

Comments
 (0)