Reusable Code : concevoir des API réutilisables en Javascript Une fonction : où la placer

namespaces et alias de compatibilité

Global scope, custom "namespace", existing object, plugin... Oublions déjà le scope global. Regardons les namespaces. Les namespaces servent à regrouper des choses qui collent ensemble. Soyons un peu vigilant à ne pas non plus trop découper !

 [javascript]
jToys.carousel();
jToys.accordion();

Pensons aussi aux alias pour la compatibilité :

[javascript]
jToys.same();
jToys.deepEquals();
jToys.same = jToys.deepEquals;

Choisir entre namespaces et plugins

Ajouter à des objets existants est aussi une bonne idée : en javascript on peut bidouiller un objet à volonté. On peut produire du code facile à lire. Bien sûr, il y a des pièges.

Attention aux pièges


Par exemple, en surchargeant un objet standard, on risque d'entrer en collision avec une nouveauté du langage (getElementsByClassName()). C'est un problème car la définition du W3C n'est pas la même que celle définie dans le framework prototype pour cette méthode. Ils vont devoir rompre la compatibilité.

Conclusion, c'est peut-être pas une excellente solution.

Écrire un plugin, ça a l'air facile aussi. C'est un peu comme étendre les types par défaut, mais avec moins de risques. Bien sûr un risque de collisions subsiste.

Choisissons donc entre namespaces et plugins. Si les utilisateurs ne connaissent pas javascript mais JQuery, utilisez les plugins. Dans un environnement ou le noyau est presque réduit à zéro. Les namespaces peuvent être adaptés. N'oubliez pas d'être cohérent !