RequireJS: Différence entre “requirejs” et “exiger” des fonctions
Je suis à l'aide de requireJS 2.x. J'ai trouvé que certains des tutoriels (et le fonctionnaire docs) utilisent parfois
requirejs.config({ [...] });
requirejs(["module"]) ...
et parfois
require.config({ [...] });
require(["module"]) ...
Quelle est la différence entre ces deux fonctions (besoin et requirejs)? Je ne pouvais pas trouver n'importe quel mot à ce sujet dans la documentation. 🙁
Vous devez vous connecter pour publier un commentaire.
Ils sont exactement les mêmes.
La raison en est que certaines des environnements peut-être déjà une
require
, auquel cas RequireJS ne pas l'écraser et permet l'utilisation de la bibliothèque par le biais derequirejs
Voir ce commit - https://github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39
requirejs
commerequire
est déjà une variable locale dans tht situation. J'ai trouvé ce utile de Réagir composants à charger des scripts supplémentaires danscomponentDidMount
.Sont
requirejs
Etrequire
le Même?De RequireJS 2.1.15,
require
etrequirejs
dans l'espace mondial sont en effet "exactement le même", comme en témoigne ce test, vous pouvez exécuter dans la console:Que le test renvoie
true
vous dit qu'ils sont les exactement la même fonction d'objet. Ils ne sont pas les deux fonctions qui sont similaires ou identiques code. Ils sont le même objet, période.Noter, toutefois, lorsque vous exécutez
define(['require'], function (require) {
Larequire
passé à la fonction est normalement différents de la globalrequire
.Devriez-Vous Utiliser
require
ourequirejs
?Il dépend. RequireJS est un AMD loader mais il n'est pas le seul chargeur dans la ville. Si vous voulez écrire du code qui est conforme à 100% à la AMD spec, de sorte que quelqu'un à l'aide de votre code pouvez utiliser n'importe quel chargeur qu'ils veulent sans avoir à modifier votre code, vous devez utiliser
require
au niveau mondial, parce querequirejs
est spécifique à RequireJS. Un autre AMD chargeur de ne pas le définir. L'AMD spec définitrequire
mais pasrequirejs
.Si vous êtes le chargement de quelque chose d'autre qui définit un mondial
require
alors vous devez utiliserrequirejs
au niveau mondial pour éviter les conflits.À l'intérieur d'un module, utilisez toujours
define
pour obtenir une référence àrequire
. Vous devez faire cela tout à fait indépendamment de savoir si il y a un conflit dans l'espace mondial.OK, ils peuvent en effet être "exactement le même". Nous allons ensuite se concentrer sur pourquoi vous devez utiliser un contre l'autre...
Ce qui est clair, c'est ce qui devrait être considéré comme "meilleure pratique": Si requirejs fournit une assurance supplémentaire "si certains environnements pouvez déjà avoir un besoin", alors ne serait-il pas toujours une bonne idée d'utiliser le requirejs fonction pour définir un besoin de configuration plutôt que le besoin de la fonction?
Aussi, ce qui se passe si l'impensable se produit et l'environnement en question non seulement a déjà un "besoin" défini, mais il a aussi un "requirejs" défini? Est-ce à dire que nous devrions avoir un requirejsjs trop? Et ainsi de suite...?
$
etjQuery
sont. C'est juste pour donner une solution de secours et être un bon citoyen dans le cas d'un environnement utilise déjàrequire
. Il est très bien un cas limite et il est recommandé d'utiliserrequire
, mais pas nécessaire - github.com/amdjs/amdjs-api/blob/master/AMD.md#global-variables-Ils sont Même
Ouvrir site web qui a chargé nécessitent déjà
puis ouvrez une console Chromée
type de besoin dans la console et appuyez sur entrée
type de requirejs dans la console et appuyez sur entrée
vous pouvez trouver qu'ils ont la même fonction avec des noms différents