Dalle require.js source code (linea 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 funzione define()
accetta due parametri facoltativi (una stringa che rappresenta un ID del modulo e una serie di moduli necessari) e un parametro richiesto (un metodo di fabbrica).
Il ritorno dello stabilimento metodo di MUST tornare l'implementazione per il modulo (nello stesso modo in cui il Module Pattern fa).
La funzione require()
non deve restituire l'implementazione di un nuovo modulo.
Utilizzando define()
si sta chiedendo qualcosa come "eseguire la funzione che sto passando come parametro e assegnare qualunque ritorna l'ID che sto passando, ma, prima, controllare che queste dipendenze sono caricati".
Utilizzando require()
che stai dicendo qualcosa come "la funzione che mi passare ha le seguenti dipendenze, verificare che queste dipendenze vengono caricati prima di eseguirlo".
La funzione require()
è dove si utilizzano i moduli definiti, per essere certi che i moduli siano definiti, ma non si definiscono nuovi moduli lì.
C'è qualche differenza sul fatto che il requisito sia utilizzato all'interno di un modulo definito o al di fuori di esso? Se viene utilizzato all'interno di un modulo, perché non è sufficiente impostare i requisiti nella definizione del modulo anziché richiedere? – Petri
Perché questa risposta è così diversa da ciò che ho letto qui http://requirejs.org/docs/api.html#deffunc ?? –
@Petri, sembra che tu stia vedendo il comportamento di RequireJS nella versione 2 del caricamento dei moduli in modo asincrono. "RequireJS 2.0 non eseguirà la funzione di fabbrica del modulo (la funzione è passata a' define() '), fino a quando non c'è stata una chiamata' require ([]) 'che l'ha richiesta, o qualcosa che dipende da esso." https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#delayed – alxndr