Kiedy należy użyć require () i kiedy użyć define ()?

Od kilku dni bawię się z requirejsem. Staram się zrozumieć różnice między definiować i wymagać.

Define wydaje się zezwalać na rozdzielanie modułów i pozwalać na przestrzeganie kolejności zależności. Ale pobiera wszystkie pliki, od których musi zacząć. Podczas gdy wymagają tylko ładunki, których potrzebujesz, gdy tego potrzebujesz.

Czy te dwa mogą być używane razem i do jakich celów powinny być używane?

Author: MatthewMartin, 2012-03-01

4 answers

Za pomocą define rejestrujesz moduł w require.js, na którym można polegać w innych definicjach modułów lub wymaganiach instrukcji. Za pomocą require" po prostu " ładujesz / używasz modułu lub pliku javascript, który może być załadowany przez require.js. Przykłady można znaleźć w dokumentacji

Moja zasada:

  • Define: jeśli chcesz zadeklarować Moduł, od którego zależą Inne części twojej aplikacji.

  • Wymagaj: jeśli chcesz tylko załadować i użyć rzeczy.

 322
Author: wischan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-27 15:14:32

Od wymaganego.js kod źródłowy (linia 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.
 */

The define() funkcja akceptuje dwa opcjonalne parametry (ciąg znaków reprezentujący ID modułu i tablicę wymaganych modułów) oraz jeden wymagany parametr (metodę fabryczną).

Zwrócenie metody fabrycznej musi zwrócić implementację dla Twojego modułu (w taki sam sposób, jak robi to wzorzec modułu ).

The require() funkcja nie musi zwracać wdrożenie nowego modułu.

Za pomocą define() prosisz o coś w stylu "uruchom funkcję, którą przekazuję jako parametr i przypisz cokolwiek zwróci do ID, które przekazuję, ale wcześniej sprawdź, czy te zależności są załadowane" .

Za pomocą require() mówisz coś w stylu "funkcja, którą przekazuję ma następujące zależności, sprawdź, czy te zależności są ładowane przed uruchomieniem".

The require() funkcja jest miejscem, w którym używasz zdefiniowanych modułów, aby mieć pewność, że moduły są zdefiniowane, ale nie definiujesz tam nowych modułów.

 324
Author: Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-31 12:33:17

"define" metoda ułatwiająca definiowanie modułów oraz metoda "require" do obsługi ładowania zależności

Define służy do definiowania nazwanych lub nienazwanych modułów na podstawie propozycji przy użyciu następującego podpisu:

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

Require z drugiej strony jest zwykle używany do ładowania kodu w pliku JavaScript najwyższego poziomu lub w module, jeśli chcesz dynamicznie pobierać zależności

Zobacz https://addyosmani.com/writing-modular-js / Więcej informacje.

 2
Author: refactor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-21 07:59:41

Require () i define () używane do ładowania zależności.Istnieje zasadnicza różnica między tymi dwoma metodami.

Its very Simple Guys

Require (): metoda jest używana do uruchamiania natychmiastowych funkcji. define (): metoda służy do definiowania modułów do użycia w wielu lokalizacjach (ponowne użycie).

 1
Author: Baalu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-09 13:45:41