Quand utiliser require () et quand utiliser define ()?

j'ai jouer avec requirejs pour les derniers jours. J'essaie de comprendre les différences entre define et require.

Define semble permettre la séparation des modules et permettre l'adhésion de l'ordre des dépendances. Mais il télécharge tous les fichiers dont il a besoin pour commencer. Tandis que require ne charge que ce dont vous avez besoin quand vous en avez besoin.

ces deux être utilisés ensemble et pour quels buts chacun doit-il être utilisé?

303
demandé sur MatthewMartin 2012-03-01 02:24:23

4 réponses

avec define vous enregistrez un module dans require.js que vous pouvez ensuite utiliser dans d'autres définitions de modules ou Require statements. Avec require vous "juste" charger / utiliser un module ou un fichier javascript qui peut être chargé par require.js. Pour des exemples ont un regard sur le documentation

Ma règle d'or:

  • Définir: Si vous voulez déclarer un module d'autres parties de votre application dépendent.

  • Exiger: Si vous voulez juste de charger et d'utiliser des trucs.

322
répondu wischan 2016-01-27 15:14:32

De l'exiger.js code source (ligne 1902):

/**
 * The function that handles definitions of modules. Differs from
 * require() in that a string for the module should be the first argument,
 * and the function to execute after dependencies are loaded should
 * return a value to define the module corresponding to the first argument's
 * name.
 */

la fonction define() accepte deux paramètres optionnels (une chaîne qui représente un ID de module et un tableau de modules requis) et un paramètre requis (une méthode d'usine).

Le retour de la méthode de fabrique DOIT retour de la mise en œuvre de votre module (de la même manière que le Motif de Module ).

la fonction require() n'a pas à retourner l'implémentation d'un nouveau module.

utilisant define() vous demandez quelque chose comme "exécutez la fonction que je passe comme paramètre et assignez ce qui revient à L'ID que je passe mais, avant, vérifiez que ces dépendances sont chargées" .

utilisant require() vous dites quelque chose comme "la fonction que je passe a les dépendances suivantes, vérifiez que ces dépendances sont chargées avant de l'exécuter" .

la fonction require() est l'endroit où vous utilisez vos modules définis, afin d'être sûr que les modules sont définis, mais vous n'y définissez pas de nouveaux modules.

324
répondu Robert 2015-07-31 12:33:17

de "définir" la méthode pour faciliter la définition de module et "l'exigent" méthode pour la manutention, le chargement des dépendances

define est utilisé pour définir les modules nommés ou non nommés sur la base de la proposition en utilisant la signature suivante:

define(
module_id /*optional*/, 
[dependencies] /*optional*/, 
definition function /*function for instantiating the module or object*/
);

nécessitent une sur l'autre main est généralement utilisé pour charger le code dans un fichier JavaScript ou au sein d'un module si vous souhaitez récupérer dynamiquement les dépendances

se référer à https://addyosmani.com/writing-modular-js/ pour plus d'informations.

2
répondu refactor 2016-03-21 07:59:41

require() et define () utilisés pour charger les dépendances.Il y a une différence majeure entre ces deux méthodes.

c'est très Simple Gars

Require (): la méthode est utilisée pour exécuter des fonctionnalités immédiates. define (): la méthode est utilisée pour définir les modules à utiliser dans plusieurs emplacements (reuse).

1
répondu Baalu 2016-10-09 13:45:41