J'utilise requireJS 2.x. J'ai découvert que certains tutoriels (et les documents officiels) utilisent parfois
requirejs.config({ [...] });
requirejs(["module"]) ...
et parfois
require.config({ [...] });
require(["module"]) ...
Y a-t-il une différence entre ces deux fonctions (require et requirejs)? Je n'ai trouvé aucun mot à ce sujet dans les documents. :(
Ce sont exactement les mêmes.
La raison est que certains environnements peuvent déjà avoir un require
, auquel cas RequireJS ne le remplace pas et autorise l'utilisation de la bibliothèque via requirejs
Voir cet engagement - https://github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39
requirejs
et require
sont-ils les mêmes?Depuis RequireJS 2.1.15, require
et requirejs
dans l'espace global sont en effet "exactement les mêmes", comme en témoigne ce test que vous pouvez effectuer dans la console:
> require === requirejs
true
Que le test renvoie true
vous indique qu'ils sont exactement le même objet fonction . Ce ne sont pas deux fonctions qui ont un code similaire ou identique. Ils sont le même objet, point final.
Notez cependant que lorsque vous exécutez define(['require'], function (require) {
Le require
transmis à la fonction est normalement différent du global require
.
require
ou requirejs
?Ça dépend. RequireJS est un chargeur AMD mais ce n'est pas le seul chargeur en ville. Si vous voulez écrire du code conforme à 100% à la spécification AMD , afin que quelqu'un utilisant votre code puisse utiliser le chargeur de son choix sans avoir à modifier votre code, vous devez utiliser require
au niveau global, car requirejs
est spécifique à RequireJS. Un autre chargeur AMD ne le définira pas. La spécification AMD définit require
mais pas requirejs
.
Si vous chargez quelque chose d'autre qui définit un require
global, vous devez utiliser requirejs
au niveau global pour éviter les conflits.
Dans un module, utilisez toujours define
pour obtenir une référence à require
. Vous devez le faire tout à fait indépendamment de l'existence d'un conflit dans l'espace mondial.
OK, ils peuvent en effet être "exactement les mêmes". Concentrons-nous ensuite sur la raison pour laquelle vous utiliseriez l'un par rapport à l'autre ...
Ce qui n'est pas clair, c'est ce qui devrait être considéré comme la "meilleure pratique": si requirejs fournit une assurance supplémentaire "si certains environnements peuvent déjà avoir un besoin", alors ne serait-ce pas une bonne idée de toujours utiliser la fonction requirejs pour définir une configuration requise plutôt que la fonction requise?
De plus, que se passe-t-il si l'impensable se produit et que l'environnement en question a non seulement déjà un "require" défini mais aussi un "requirejs" défini? Est-ce à dire que nous devrions également avoir un requirejsjs? Etc...?
Ce sont les mêmes sites Web ouverts qui ont déjà été chargés
puis ouvrez la console Chrome console
tapez requis dans la console et appuyez sur Entrée
tapez requirejs dans la console et appuyez sur Entrée
vous pouvez constater qu'ils sont la même fonction avec des noms différents