Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 9879|Odpoveď: 0

[JavaScript] požiadavka() príkaz AMD špecifikácia

[Kopírovať odkaz]
Zverejnené 13. 2. 2019 14:01:09 | | |
Tento príspevok naposledy upravila Summer 13. 2. 2019 o 14:04

V roku 2009 americký programátor Ryan Dahl vytvoril node.js projekt, ktorý využíva jazyk JavaScript pre programovanie na strane servera.

Toto znamená zrod "Javascript modulárneho programovania". Zložitosť front-endu je obmedzená a je v poriadku nemať žiadne moduly, ale na strane servera musia byť moduly na interakciu s operačným systémom a inými aplikáciami, inak sa to vôbec nedá programovať.

Jednou z najdôležitejších myšlienok v programovaní uzlov sú moduly, a práve táto myšlienka umožňuje rozsiahle inžinierstvo JavaScriptu. Modulárne programovanie bolo populárne vo svete JS a bolo na tom založené, a potom sa na strane prehliadača objavili aj toolkity ako requirejs a seajs, takpovediac, pod príslušnou špecifikáciou, ktoré vyžadovali všetko modulárne programovanie pred ES6, dokonca aj dnes, ešte predtým, než bol modul ES6 plne implementovaný.

V CommonJS modul expozície používa module.exports a exporty a mnohí ľudia nechápu, prečo sú tam dva exponované objekty, ktoré budú predstavené neskôr

V CommonJS existuje globálna metóda require(), ktorá sa používa na načítanie modulov. Za predpokladu, že existuje matematický modul math.js, dá sa načítať takto.



Metódy poskytované modulom potom môžete nazvať:

Práve kvôli metóde require používanej CommonJS bola metóda require používaná AMD a CMD neskôr použitá aj na označenie štýlu modulov

Špecifikácia AMD

Pri serverových moduloch je prirodzené, že každý chce moduly na strane klienta. A je najlepšie, ak sú tieto dva moduly kompatibilné a modul môže bežať na serveri aj prehliadači bez úprav.

Existuje však zásadné obmedzenie, ktoré robí špecifikáciu CommonJS neaplikovateľnou na prostredia prehliadača. Stále kód z predchádzajúcej sekcie, ak beží v prehliadači, bude veľký problém



Druhý riadok math.add(2, 3) beží po požiadavke prvého riadku ('math'), takže musí počkať, kým math.js načítanie skončí. To znamená, že ak je čas načítavania dlhý, celá aplikácia tam zastaví a čaká.

Na strane servera to nie je problém, pretože všetky moduly sú uložené na lokálnom pevnom disku a môžu sa načítať synchronne, pričom čas čakania je čas čítania pevného disku. Pre prehliadače je to však veľký problém, pretože moduly sú umiestnené na strane servera a čas čakania závisí od rýchlosti internetu, čo môže trvať dlho, a prehliadač je v stave "pozastavenej smrti".


Preto moduly na strane prehliadača nemôžu používať "synchronné", ale iba "asynchrónne". Toto je pozadie vzniku špecifikácie AMD.

AMD je skratka pre "Asynchronous Module Definition", čo znamená "Asynchronous Module Definition" (Definícia asynchrónneho modulu). Načítava modul asynchrónne a načítanie modulu neovplyvňuje prevádzku jeho nasledujúcich príkazov. Všetky príkazy, ktoré závisia od tohto modulu, sú definované v callback funkcii, ktorá sa spustí až po dokončení načítania.

Moduly musia byť definované pomocou konkrétnej funkcie define().


•ID: reťazec, názov modulu (voliteľné)
•dependencies: je závislý modul, ktorý chceme načítať (voliteľne), používajúc relatívnu cestu. , všimnite si, že ide o formát poľa
•Factory: továrenská metóda, vracia modulovú funkciu
Ak modul nezávisí od iných modulov, môže byť definovaný priamo vo funkcii define().


Ak modul závisí aj od iných modulov, potom prvým argumentom funkcie define() musí byť pole, ktoré indikuje závislosti modulu.



Keď funkcia require() načíta vyššie uvedený modul, najskôr načíta Lib.js súbor.

AMD tiež používa príkaz require() na načítanie modulu, ale na rozdiel od CommonJS vyžaduje dva parametre:

Prvým parametrom [modul] je pole a prvky v ňom sú moduly, ktoré sa majú načítať; Druhý parameter callback je callback funkcia po úspešnom zaťažení. Ak prepíšete predchádzajúci kód do formy AMD, vyzerá to takto:


math.add() nie je synchronizovaný s načítavaním matematického modulu a prehliadač neprerušuje animáciu. Takže je zrejmé, že AMD je vhodnejšie pre prostredie prehliadača.

V súčasnosti existujú dve hlavné Javascriptové knižnice, ktoré implementujú špecifikáciu AMD :require.js a curl.js.







Predchádzajúci:init: function (){}方法的写法原因
Budúci:【Praktický boj】Kibana 6.5.2 Čínsky čínsky tutoriál
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com