Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 9631|Odgovoriti: 0

[JavaScript] zahteva() izjava AMD specifikacija

[Kopiraj povezavo]
Objavljeno na 13. 02. 2019 14:01:09 | | |
To objavo je nazadnje uredila Summer 13. 2. 2019 ob 14:04

Leta 2009 je ameriški programer Ryan Dahl ustvaril projekt node.js uporabo jezika JavaScript za strežniško programiranje.

To pomeni začetek "Javascript modularnega programiranja". Kompleksnost front-enda je omejena in v redu je, če nimate modulov, vendar morajo na strežniški strani obstajati moduli za interakcijo z operacijskim sistemom in drugimi aplikacijami, sicer jih ni mogoče programirati.

Ena najpomembnejših idej v programiranju vozlišč so moduli, in prav ta ideja omogoča obsežno inženirstvo JavaScripta. Modularno programiranje je bilo priljubljeno v svetu JS in temeljilo je na tem, nato pa so se na strani brskalnika pojavila orodja, kot sta requirejs in seajs, tako rekoč, pod ustrezno specifikacijo, ki so zahtevala vse modularno programiranje pred ES6, tudi danes, preden je bil modul ES6 popolnoma implementiran.

V CommonJS modul za eksponacijo uporablja module.exports in exports, mnogi pa ne razumejo, zakaj sta dva izpostavljena objekta, ki bosta predstavljena kasneje

V CommonJS obstaja globalna metoda require(), ki se uporablja za nalaganje modulov. Če predpostavimo, da obstaja matematični modul math.js, ga je mogoče naložiti tako.



Metode, ki jih ponuja modul, lahko nato poimenujete:

Prav zaradi metode zahteva, ki jo uporablja CommonJS, je metoda zahteva, ki sta jo uporabljala AMD in CMD, kasneje uporabljena tudi za označevanje sloga modulov

Specifikacija AMD

Pri strežniških modulih je naravno, da si vsi želijo modulov na strani odjemalca. In najbolje je, da sta oba združljiva in da lahko modul teče tako na strežniku kot v brskalniku brez sprememb.

Vendar pa obstaja velika omejitev, zaradi katere specifikacija CommonJS ni uporabna za brskalniška okolja. Še vedno koda iz prejšnjega razdelka, če deluje v brskalniku, bo velika težava



Druga vrstica math.add(2, 3) teče po prvi vrstici zahteva('math'), zato mora počakati, da se math.js naložitev. Če je čas nalaganja dolg, se celotna aplikacija tam ustavi in počaka.

To ni problem na strežniški strani, saj so vsi moduli shranjeni na lokalnem trdem disku in jih je mogoče naložiti sinhrono, čas čakanja pa je čas branja trdega diska. Vendar pa je to za brskalnike velik problem, saj so moduli nameščeni na strežniški strani, čas čakanja pa je odvisen od hitrosti interneta, kar lahko traja dolgo, brskalnik pa je v stanju "suspendirane smrti".


Zato moduli na strani brskalnika ne morejo uporabljati "sinhronog", lahko pa le "asinhrono". To je ozadje rojstva AMD specifikacije.

AMD je okrajšava za "Asinhrono definicijo modula", kar pomeni "Definicija asinhronega modula". Modul se naloži asinhrono, nalaganje modula pa ne vpliva na delovanje njegovih naslednjih stavkov. Vse stavke, ki so odvisne od tega modula, so definirane v funkciji za povratni klic, ki se ne bo zagnala, dokler nalaganje ni končano.

Module je treba definirati s specifično funkcijo define().


•ID: niz, ime modula (neobvezno)
•odvisnosti: je odvisni modul, ki ga želimo naložiti (opcijsko), z uporabo relativne poti. , upoštevajte, da gre za format polja
•tovarna: tovarniška metoda, vrne funkcijo modula
Če modul ni odvisen od drugih modulov, ga lahko definiramo neposredno v funkciji define().


Če modul je odvisen tudi od drugih modulov, mora biti prvi argument funkcije define() polje, ki označuje odvisnosti modula.



Ko funkcija zahteva() naloži zgornji modul, bo najprej naložila Lib.js datoteko.

AMD prav tako uporablja ukaz require() za nalaganje modula, vendar za razliko od CommonJS zahteva dva parametra:

Prvi parameter [modul] je polje, elementi v njem pa so moduli, ki jih je treba naložiti; Drugi parameter povratni klic je funkcija povratnega klica po uspešnem obremenitvi. Če prepišeš prejšnjo kodo v AMD obliko, izgleda takole:


math.add() ni sinhroniziran z nalaganjem matematičnih modulov in brskalnik ne prekine animacije. Torej je AMD očitno bolj primeren za okolje brskalnikov.

Trenutno obstajata dve glavni Javascript knjižnici, ki implementirata AMD specifikaciji :require.js in curl.js.







Prejšnji:init: function (){}方法的写法原因
Naslednji:【Praktični boj】Kibana 6.5.2 Kitajščina
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com