Qu'est-ce que le protocole definition() décrit dans la spécification CommonJS m'apporte ?

StackOverflow https://stackoverflow.com/questions/6063267

  •  15-11-2019
  •  | 
  •  

Question

Je comprends comment des choses comme espacement correct des noms et le Modèle de module problèmes d'aide associés à s'infiltrer à l'échelle mondiale.

Je vois également parfaitement la valeur de la gestion de la dépendance aux ressources prévue dans le require() protocole décrit dans le Spécification CommonJS.

Cependant, je suis perplexe quant aux avantages de l'AMD. define() l'utilisation et le but de la fonction.

La signature CommonJS pour définir est :

define(id?, dependencies?, factory);

En plus…

Au début, cela "semblait" être un autre wrapper de plug-in... jusqu'à ce que je commence à voir des gens l'utiliser avec le modèle de module.

Mes questions sont donc les suivantes :

  • Que fait le define() Protocole décrit dans la spécification CommonJS M'ACHETER?
  • Est-ce en quelque sorte plus éloquent ?
  • Est-il destiné à remplacer le modèle modulaire ?
  • Est-ce d'une manière ou d'une autre plus rapide ?
  • Si oui, pourquoi?
Était-ce utile?

La solution

// main.js
require("foo.js", function(foo) {
    console.log(foo === 42); // true
});

//foo.js

/*
define(42);

define({
   "foo": "bar"
});

define(["bar.js"], function(bar) {
    return bar.foo;
});
*/

define(function() {
     return 42;
});

Define est un excellent moyen de renvoyer des objets modulaires sans dépendre de la portée globale.

L'API particulière de definition varie cependant d'une bibliothèque à l'autre.

Ici, l'idée de base est que vous appelez définir dans un fichier pour définir ce qu'est ce module.Ensuite, lorsque vous avez besoin du fichier, vous obtenez le module.Cela élimine l’intermédiaire qui est à l’échelle mondiale.

Ce n'est pas plus rapide cependant (c'est plus lent que l'injection dans la portée globale).

En utilisant require et define vous n'avez que deux valeurs globales.

Le particulier define l'exemple ci-dessus correspond au nécessiteJS API

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top