RequireJS - moduły AMD
Moduł w RequireJS jest obiektem o określonym zakresie i nie jest dostępny w globalnej przestrzeni nazw. W związku z tym globalna przestrzeń nazw nie zostanie zanieczyszczona. Składnia RequireJS pozwala na szybsze ładowanie modułów bez martwienia się o śledzenie kolejności zależności. Na tej samej stronie możesz załadować wiele wersji tego samego modułu.
Definiowanie modułów
Moduł jest definiowany za pomocą define()funkcjonować; ta sama funkcja służy również do ładowania modułu.
Proste pary nazwa / wartość
Jeśli moduł jest tylko zbiorem par nazw i wartości, możesz użyć następującej składni -
define({
state: "karnataka",
city: "bangalore"
});
Definiowanie funkcji
Moduł może również używać funkcji dla frameworków bez zależności. Można to zrobić za pomocą następującej składni -
define(function () {
//Do setup work here
return {
state: "karnataka",
city: "bangalore"
}
});
Definiowanie funkcji za pomocą zależności
Jeśli moduł ma zależności, umieszczenie pierwszego argumentu (tablica nazw zależności), drugiego argumentu (funkcja definiująca) i zwracanego obiektu, który definiuje moduł, jest pokazane w następującej składni -
define(["./mnc", "./startup"],
function(mnc, startup) {
return {
state: "karnataka",
city: "bangalore",
addCompany: function() {
mnc.decrement(this);
startup.add(this);
}
}
}
);
Definiowanie modułu jako funkcji
Moduł nie musi zwracać tylko obiektów, można również zwrócić każdą prawidłową wartość z funkcji. Poniższa składnia służy do definiowania modułu jako funkcji -
define(["./mnc", "./startup"],
function(mnc, startup) {
return function(title) {
return title ? (window.title = title) :
startup.storeName + ' ' + mnc.name;
}
}
);
Definiowanie modułu za pomocą nazwy
W niektórych przypadkach może być konieczne dołączenie nazwy modułu jako pierwszego argumentu define(). Można to zrobić za pomocą następującej składni -
define("js2/title",
["js1/mnc", "js1/startup"],
function(mnc, startup) {
//Define js2/title object in here.
}
);
Ładowanie modułu