Bonjour,
Je me suis fait une petite fonction require() style node.js pour mes développement frontend, ça me permet de charger dynamiquement des "modules" lors de l'exécution du script, sans avoir à inclure toute ma librairie au lancement de la page, et de les utiliser de façon indépendante.
Le but est en somme de pouvoir faire ceci:
var foo = require('lib/foo');
foo.magic();
Et dans lib/foo.js:
exports.magic = function () {
// do magic
};
Le souci c'est que ça me fait utiliser deux pratiques dépréciées de JavaScript, à savoir les requêtes HTTP synchrones, et la vilaine fonction eval().
Voilà le code de ma fonction require(): http://wall.deblan.fr/x163f/javascript/1/
Je suis vraiment satisfait de cette fonction, mais je ne dors pas totalement sur mes oreilles pour les raisons que j'évoque ci-dessus...
J'avais fait une version totalement asynchrone et sans eval explicite (on créé un script avec src qu'on append au body, en utilisant les évènements load et error pour appeler un callback), mais ça ne fonctionnait pas à tous les coups (des fois strictement aucun script n'était chargé, et sans renvoyer d'erreur).
Vous pensez que c'est un crime d'utiliser des requêtes bloquantes avec un eval() ? Devrais-je plutôt utiliser jQuery.getScript() ? 