RequireJS - Moduli AMD
Un modulo in RequireJS è un oggetto con ambito e non è disponibile nello spazio dei nomi globale. Quindi, lo spazio dei nomi globale non verrà inquinato. La sintassi RequireJS consente di caricare i moduli più velocemente senza preoccuparsi di tenere traccia dell'ordine delle dipendenze. Puoi caricare più versioni dello stesso modulo nella stessa pagina.
Definizione dei moduli
Il modulo viene definito utilizzando il define()funzione; la stessa funzione viene utilizzata anche per caricare il modulo.
Coppie semplici nome / valore
Se il modulo è solo una raccolta di coppie di nomi e valori, è possibile utilizzare la seguente sintassi:
define({
state: "karnataka",
city: "bangalore"
});
Definizione di funzioni
Un modulo può anche utilizzare una funzione per i framework, senza avere dipendenze. Questo può essere fatto usando la seguente sintassi:
define(function () {
//Do setup work here
return {
state: "karnataka",
city: "bangalore"
}
});
Definizione di funzioni con dipendenze
Se il modulo ha delle dipendenze, la posizione del primo argomento (matrice di nomi di dipendenza), del secondo argomento (funzione di definizione) e dell'oggetto di ritorno che definisce il modulo è mostrata nella seguente sintassi:
define(["./mnc", "./startup"],
function(mnc, startup) {
return {
state: "karnataka",
city: "bangalore",
addCompany: function() {
mnc.decrement(this);
startup.add(this);
}
}
}
);
Definizione di un modulo come funzione
Non è obbligatorio per un modulo restituire solo oggetti, può anche essere restituito qualsiasi valore valido da una funzione. La seguente sintassi viene utilizzata per definire un modulo come una funzione:
define(["./mnc", "./startup"],
function(mnc, startup) {
return function(title) {
return title ? (window.title = title) :
startup.storeName + ' ' + mnc.name;
}
}
);
Definizione di un modulo con un nome
In alcuni casi potrebbe essere necessario includere un nome per il modulo come primo argomento di define(). Questo può essere fatto usando la seguente sintassi:
define("js2/title",
["js1/mnc", "js1/startup"],
function(mnc, startup) {
//Define js2/title object in here.
}
);
Caricamento del modulo