Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 9631|Odpověď: 0

[JavaScript] specifikace příkazu (požadavek) AMD

[Kopírovat odkaz]
Zveřejněno 13.02.2019 14:01:09 | | |
Tento příspěvek naposledy upravila Summer dne 13. 2. 2019 v 14:04

V roce 2009 americký programátor Ryan Dahl vytvořil node.js projekt využívající jazyk JavaScript pro serverové programování.

To znamená zrod "modulárního programování v JavaScriptu". Složitost front-endu je omezená a je v pořádku nemít žádné moduly, ale na straně serveru musí existovat moduly pro interakci s operačním systémem a dalšími aplikacemi, jinak to nelze vůbec programovat.

Jednou z nejdůležitějších myšlenek v programování uzlů jsou moduly, a právě tato myšlenka umožňuje rozsáhlé inženýrství JavaScriptu. Modulární programování bylo populární ve světě JS a bylo na něm založeno, a pak se na straně prohlížeče objevily nástroje jako requirejs a seajs, obrazně řečeno, pod odpovídající specifikací, které vyžadovaly veškeré modulární programování před ES6, a to i dnes, ještě před plnou implementací modulu ES6.

V CommonJS modul expozice používá module.exports a export, a mnoho lidí nechápe, proč jsou tam dva exponované objekty, které budou představeny později

V CommonJS existuje globální metoda require(), která se používá k načítání modulů. Pokud existuje matematický modul math.js, lze ho načíst takto.



Metody poskytované modulem pak můžete nazývat takto:

Právě kvůli metodě require používané CommonJS byla metoda require používaná AMD a CMD později použita pro označení stylu modulů

Specifikace AMD

U serverových modulů je přirozené, že každý chce klientské moduly. A je nejlepší, když jsou oba kompatibilní a modul může běžet jak na serveru, tak v prohlížeči bez úprav.

Existuje však zásadní omezení, které činí specifikaci CommonJS neaplikovatelnou na prostředí prohlížeče. Stále kód z předchozí části, pokud běží v prohlížeči, bude velký problém



Druhý řádek math.add(2, 3) běží po prvním řádku požadavku ('math'), takže musí počkat, až math.js načtení skončí. To znamená, že pokud je načítací doba dlouhá, celá aplikace tam zastaví a počká.

Na straně serveru to není problém, protože všechny moduly jsou uloženy na lokálním pevném disku a lze je načíst synchronně, přičemž doba čekání je doba čtení pevného disku. Pro prohlížeče je to však velký problém, protože moduly jsou umístěny na straně serveru a doba čekání závisí na rychlosti internetu, která může trvat dlouho, a prohlížeč je ve stavu "pozastavené smrti".


Proto moduly na straně prohlížeče nemohou používat "synchronní", ale pouze "asynchronní". To je pozadí vzniku specifikace AMD.

AMD je zkratka pro "Asynchronous Module Definition" (Asynchronous Module Definition), což znamená "Asynchronous Module Definition" (Asynchronous Module Definition). Načítá modul asynchronně a načítání modulu neovlivňuje provoz jeho následujících příkazů. Všechny příkazy, které závisí na tomto modulu, jsou definovány v callback funkci, která se spustí až po dokončení načítání.

Moduly musí být definovány pomocí specifické funkce define().


•ID: řetězec, název modulu (volitelné)
•dependencies: je závislý modul, který chceme načíst (volitelné), pomocí relativní cesty. , všimněte si, že jde o formát pole
•tovární: tovární metoda, vrací modulovou funkci
Pokud modul nezávisí na jiných modulech, lze jej definovat přímo ve funkci define().


Pokud modul závisí i na jiných modulech, pak prvním argumentem funkce define() musí být pole, které indikuje závislosti modulu.



Když funkce requir() načte výše uvedený modul, nejprve načte Lib.js soubor.

AMD také používá příkaz require() k načtení modulu, ale na rozdíl od CommonJS vyžaduje dva parametry:

Prvním parametrem [modul] je pole a prvky v něm jsou moduly, které se mají načítat; Druhým parametrem callback je funkce callbacku po úspěšném zatížení. Pokud přepíšete předchozí kód do podoby AMD, vypadá to takto:


math.add() není synchronizován s načítáním matematického modulu a prohlížeč nepřerušuje animaci. Takže je zřejmé, že AMD je vhodnější pro prostředí prohlížečů.

V současnosti existují dvě hlavní Javascriptové knihovny, které implementují specifikaci AMD :require.js a curl.js.







Předchozí:init: function (){}方法的写法原因
Další:【Praktický boj】Kibana 6.5.2 Čínský čínský tutoriál
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com