Bonjour,
J'ai fait quelques recherches sur les syntaxes de modules en JavaScript. Je cherchais un moyen d'encapsuler du code JS de sorte à ne pas polluer l'espace de nom plus que nécessaire. J'aimerais avoir votre avis sur les structures qui vous semblent les plus utiles et sur les conventions syntaxiques que vous utilisez.
Parmi mes lectures:
- JavaScript : organiser son code en modules (Julien Royer)
- Again with the Module Pattern – reveal something to the world (Chris Heilmann)
- JavaScript Module Pattern: In-Depth (Ben Cherry)
- Why I don't love JavaScript's Module Pattern (Jonathan Snook)
Mes questions (notez que j'utilise des termes pas toujours corrects
):
Module anonyme
Deux syntaxes équivalentes (la différence est dans le placement de la parenthèse à la fin). Laquelle est à privilégier selon vous?
Module nommé: encore des parenthèses?
Les deux syntaxe marchent et semblent équivalentes. Est-ce bien le cas? Si oui, laquelle est plus utilisée, par convention? J'ai une petite préférence pour la première syntaxe, car si on peut limiter l'orgie de parenthèses et accolades habituelle en JavaScript, je suis pas contre.
Module anonyme, pas possible sans les parenthèses?
Ça marche pour un module nommé (deuxième syntaxe ci-dessus), mais pas pour un anonyme? Comment se fait-ce? Une décision arbitraire d'ECMAScript?
Module nommé, exposer des propriétés et méthodes
Après mes lectures, je suis plutôt partisan de la syntaxe du "revealing module pattern". On travaille tranquillement avec une syntaxe «classique» pour définir des variables et fonctions, et ensuite en liste celles qui doivent être visible de l'extérieur. Votre avis?
L'exemple qui va bien:
Modifié par Florent V. (16 Jul 2010 - 14:51)
J'ai fait quelques recherches sur les syntaxes de modules en JavaScript. Je cherchais un moyen d'encapsuler du code JS de sorte à ne pas polluer l'espace de nom plus que nécessaire. J'aimerais avoir votre avis sur les structures qui vous semblent les plus utiles et sur les conventions syntaxiques que vous utilisez.
Parmi mes lectures:
- JavaScript : organiser son code en modules (Julien Royer)
- Again with the Module Pattern – reveal something to the world (Chris Heilmann)
- JavaScript Module Pattern: In-Depth (Ben Cherry)
- Why I don't love JavaScript's Module Pattern (Jonathan Snook)
Mes questions (notez que j'utilise des termes pas toujours corrects

Module anonyme
Deux syntaxes équivalentes (la différence est dans le placement de la parenthèse à la fin). Laquelle est à privilégier selon vous?
(function(){
// 1
})();
(function(){
// 2
}());
Module nommé: encore des parenthèses?
Les deux syntaxe marchent et semblent équivalentes. Est-ce bien le cas? Si oui, laquelle est plus utilisée, par convention? J'ai une petite préférence pour la première syntaxe, car si on peut limiter l'orgie de parenthèses et accolades habituelle en JavaScript, je suis pas contre.

var MODULE1 = (function(){
// ...
}());
var MODULE2 = function(){
// ...
}();
Module anonyme, pas possible sans les parenthèses?
Ça marche pour un module nommé (deuxième syntaxe ci-dessus), mais pas pour un anonyme? Comment se fait-ce? Une décision arbitraire d'ECMAScript?
/* Ok ça marche */
var MODULE = function(){
// 1
}();
/* Syntax error, méheucépajuste! */
function(){
// 2
}();
Module nommé, exposer des propriétés et méthodes
Après mes lectures, je suis plutôt partisan de la syntaxe du "revealing module pattern". On travaille tranquillement avec une syntaxe «classique» pour définir des variables et fonctions, et ensuite en liste celles qui doivent être visible de l'extérieur. Votre avis?
L'exemple qui va bien:
var MODULE = function(){
var machin = 1, truc = 42;
function bidule(){
// ...
};
function chose(){
// ...
}
return {truc:truc, chose:chose}
}();
Modifié par Florent V. (16 Jul 2010 - 14:51)