Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 9631|Odpowiedź: 0

[JavaScript] wymaganie() specyfikacja AMD

[Skopiuj link]
Opublikowano 13.02.2019 14:01:09 | | |
Ten post został ostatnio edytowany przez Summer 2019-2-13 o 14:04

W 2009 roku amerykański programista Ryan Dahl stworzył node.js projekt wykorzystujący język JavaScript do programowania po stronie serwera.

To oznacza narodziny "programowania modularnego Javascript". Złożoność front-endu jest ograniczona i nie ma nic do zaoferowania, ale po stronie serwera muszą być moduły do interakcji z systemem operacyjnym i innymi aplikacjami, w przeciwnym razie nie można ich w ogóle zaprogramować.

Jednym z najważniejszych pomysłów w programowaniu węzłowym są moduły, i to właśnie ta idea umożliwia inżynierię JavaScriptu na dużą skalę. Programowanie modułowe było popularne w świecie JS i opierało się na tym, a następnie po stronie przeglądarki pojawiły się zestawy narzędzi takie jak requirejs i seajs, można powiedzieć, pod odpowiednią specyfikacją, które wymagały wszystkich programów modularnych przed ES6, nawet teraz, zanim moduł ES6 został w pełni zaimplementowany.

W CommonJS moduł ekspozycji korzysta z module.exports i exports, a wiele osób nie rozumie, dlaczego są dwa obiekty wystawione, które zostaną wprowadzone później

W CommonJS istnieje globalna metoda require(), która służy do ładowania modułów. Zakładając, że istnieje moduł matematyczny math.js, można go załadować w ten sposób.



Następnie można nazwać metody udostępnione przez moduł:

To właśnie ze względu na metodę require stosowaną przez CommonJS, metoda require stosowana przez AMD i CMD została później użyta do określenia stylu modułów

Specyfikacja AMD

W przypadku modułów po stronie serwera naturalne jest, że każdy chce mieć moduły po stronie klienta. I najlepiej, by oba były kompatybilne, a moduł mógł działać zarówno na serwerze, jak i w przeglądarce bez żadnych modyfikacji.

Jednak istnieje poważne ograniczenie, które sprawia, że specyfikacja CommonJS nie ma zastosowania w środowiskach przeglądarkowych. Wciąż kod z poprzedniej sekcji, jeśli uruchomi się w przeglądarce, pojawi się poważny problem



Druga linia math.add(2, 3) wykonuje się po pierwszym wierszu require ('math'), więc musi poczekać na zakończenie math.js ładowania. To znaczy, jeśli czas ładowania jest długi, cała aplikacja na tym się zatrzyma i czeka.

Nie stanowi to problemu po stronie serwera, ponieważ wszystkie moduły są przechowywane na lokalnym dysku twardym i mogą być ładowane synchronicznie, a czas oczekiwania to czas odczytu dysku twardego. Jednak dla przeglądarek jest to duży problem, ponieważ moduły są umieszczone po stronie serwera, a czas oczekiwania zależy od prędkości internetu, co może zająć dużo czasu, a przeglądarka znajduje się w stanie "zawieszonej śmierci".


Dlatego moduły przeglądarkowe nie mogą używać "synchronicznie", a jedynie "asynchronicznie". To właśnie tło dla narodzin specyfikacji AMD.

AMD to skrót od "Asynchronous Module Definition" (Definicja modułu asynchronicznego), co oznacza "Asynchronous Module Definition" (Definicja modułu asynchronicznego (Asynchronous Module Definition). Ładuje moduł asynchronicznie, a jego ładowanie nie wpływa na działanie kolejnych instrukcji. Wszystkie instrukcje zależne od tego modułu są definiowane w funkcji callback, która nie uruchomi się, dopóki ładowanie nie zostanie zakończone.

Moduły muszą być zdefiniowane za pomocą konkretnej funkcji definie().


•ID: ciąg znaków, nazwa modułu (opcjonalnie)
•zależności: to zależny moduł, który chcemy załadować (opcjonalnie), korzystając ze ścieżki względnej. , zwróć uwagę, że jest to format tablicy
• Factory: metoda fabryczna, zwraca funkcję modułu
Jeśli moduł nie zależy od innych modułów, można go zdefiniować bezpośrednio w funkcji definiuj().


Jeśli moduł zależy także od innych modułów, to pierwszym argumentem funkcji define() musi być tablica wskazująca zależności modułu.



Gdy funkcja wymagań() ładuje powyższy moduł, najpierw załaduje Lib.js plik.

AMD również używa polecenia require() do ładowania modułu, ale w przeciwieństwie do CommonJS, wymaga dwóch parametrów:

Pierwszym parametrem [moduł] jest tablica, a elementy w niej to moduły do załadowania; Drugi parametr callback to funkcja callback po pomyślnym obciążeniu. Jeśli przepiszesz poprzedni kod na AMD, wygląda to tak:


math.add() nie jest synchronizowany z ładowaniem modułu matematycznego, a przeglądarka nie zawiesza animacji. Więc oczywiście AMD lepiej pasuje do środowiska przeglądarek.

Obecnie istnieją dwie główne biblioteki Javascript, które implementują specyfikację AMD :require.js i curl.js.







Poprzedni:init: function (){}方法的写法原因
Następny:【Praktyczna walka】Kibana 6.5.2 Chiński Tutorial
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com