Jeden rdzeń różnicą, że denerwują mnie na początku użytkowania był zastanawianie się, że define
nigdy nie można nazwać.
Dopóki istnieje tylko jeden plik define
, zarejestruje on ten moduł jako dostępny pod tą nazwą pliku. Jednak moduły define
są ładowane tylko wtedy, gdy funkcja require
prosi o każdą z nich.
Definicja: Jeśli potrzebujesz XXX, najpierw załaduj te inne rzeczy, a następnie zwróć wynik tej funkcji.
Wymaga: Załaduj te inne rzeczy, a następnie uruchom tę funkcję. (Nie „jeśli”)
Przykład: Powiedzmy, że to ten JS plik na swojej stronie:
// this is in company/welcomepage.js
define(['company/ui_library'],
function(uiLib) {
console.log('Welcome to {company}!');
}
);
Jeśli to jedyny plik JavaScript, można otworzyć stronę, i nie byłoby w tym nic w logu konsoli, pomimo skryptu mówiącego, żeby powitał użytkownika. Jednak, że jeśli zmienia się gdzieś na stronie, lub w innym scenariuszu, wstawić następujące:
require(['company/welcomepage'], function() {
// optionally insert some other page-initialization logic here
});
Teraz strona położy wiadomość powitalną w konsoli podczas ładowania.
W rzeczywistości, z tym drugim w miejscu, nie trzeba było ręcznie ręcznie dołączyć welcomepage.js jako znacznik <script>
; załaduje go ze swojej lokalizacji, gdy tylko zobaczy wymaganie i zda sobie sprawę, że tego potrzebuje.
Zobacz http://stackoverflow.com/questions/9507606/when-to-use-require-and-when-to-use-define –
To jest duplikat, ale tutaj wyjaśnienie należy podać w odniesieniu do przykładu . –