Quando dovrei usare require () e quando usare define ()?

Ho giocato con requirejs negli ultimi giorni. Sto cercando di capire le differenze tra definire e richiedere.

La definizione sembra consentire la separazione dei moduli e consentire l’adesione delle dipendenze. Ma scarica tutti i file di cui ha bisogno per cominciare. Mentre richiedono solo carichi ciò di cui hai bisogno quando ne hai bisogno.

Questi due possono essere usati insieme e per quali scopi dovrebbe essere usato ciascuno di essi?

Con define si registra un modulo in require.js che si può quindi dipendere in altre definizioni di modulo o richiedere istruzioni. Con require “solo” caricare / utilizzare un modulo o un file javascript che può essere caricato da require.js. Per esempi dare un’occhiata alla documentazione

La mia regola generale:

  • Definisci: se vuoi dichiarare un modulo, dipenderanno da altre parti della tua applicazione.

  • Richiesto: se si desidera solo caricare e utilizzare materiale.

Dal codice sorgente require.js (riga 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 opzionali (una stringa che rappresenta un ID modulo e un array di moduli richiesti) e un parametro richiesto (un metodo factory).

Il ritorno del metodo factory DEVE restituire l’implementazione per il tuo modulo (nello stesso modo in cui lo fa il Pattern Module ).

La funzione require() non deve restituire l’implementazione di un nuovo modulo.

Usando define() stai chiedendo qualcosa come “esegui la funzione che sto passando come parametro e assegna qualsiasi ritorno all’ID che sto passando ma, prima, controlla che queste dipendenze siano caricate” .

Usando require() stai dicendo qualcosa come “la funzione che passo ha le seguenti dipendenze, controlla che queste dipendenze siano caricate prima di eseguirlo” .

La funzione require() è dove usi i tuoi moduli definiti, per essere sicuro che i moduli siano definiti, ma non stai definendo nuovi moduli lì.

metodo “define” per facilitare la definizione dei moduli e il metodo “require” per la gestione del caricamento delle dipendenze

define viene utilizzato per definire i moduli con nome o senza nome in base alla proposta utilizzando la seguente firma:

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

d’altra parte, in genere, viene utilizzato per caricare il codice in un file JavaScript di livello superiore o all’interno di un modulo se si desidera recuperare le dipendenze in modo dinamico

Fare riferimento a https://addyosmani.com/writing-modular-js/ per ulteriori informazioni.

require () e define () entrambi usati per caricare le dipendenze. C’è una grande differenza tra questi due metodi.

È molto semplice

Require (): il metodo viene utilizzato per eseguire funzionalità immediate. define (): Il metodo viene utilizzato per definire i moduli da utilizzare in più posizioni (riutilizzo).