Hello,
Alors tu mélanges beaucoup de choses et il faut bien les comprendre séparément avant de vouloir les combiner
var module = require("nomModule")
On appelle ça la notation CommonJS, et c'est intégré de base à NodeJS (pour rappel, Babel et Gulp sont tous les deux des outils lancés par NodeJS). Ça résout de manière synchrone les modules via une URL ou un alias de référence pour les modules NPM. Synchrone, ça veut dire que dès la ligne de code suivante le module est chargé et prêt à l'emploi.
MAIS cette notation CommonJS n'existe pas dans les navigateurs côté client, où charger des modules prend du temps (la requête réseau pour charger le fichier, le temps d'exécution, tout ça tout ça). Donc c'est une opération asynchrone, et on parle cette fois de notation AMD (pour Asynchronous Module Definition). Et RequireJS est justement une bibliothèque AMD prévue pour les navigateurs. Voilà un exemple de code RequireJS:
1 2
| require(['util', 'text'], function(util, text) { // ici util et text sont chargés et prêts à l'emploi
}); |
On voit la différence avec le premier code, il faut passer une fonction de callback qui est appelée plus tard, quand les modules sont chargés et prêts.
Pas de bol, RequireJS utilise le même mot-clé require que la notation CommonJS. Mais ce n'est pas du tout la même chose...
Donc si tu as bien tout suivi, Gulp et Babel étant exécutés par Node, les combiner avec du RequireJS n'a pas de sens.
Le plugin Babel que tu as trouvé fait quelque-chose de plus particulier: il convertit la syntaxe import/export des modules ES6 (qui est le nouveau standard qui remplace CommonJS et AMD) en syntaxe AMD compatible avec la lib RequireJS. C'est donc utile pour écrire en ES6 du code prévu pour être exécuté sur les navigateurs, en profitant des avantages de la déclaration asynchrone. C'est assez précis comme besoin donc je voudrais être sûr que c'est bien ça que tu cherches à faire avant d'aller plus loin.
Partager