Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 9631|Răspunde: 0

[JavaScript] instrucțiune requir() specificație AMD

[Copiază linkul]
Postat pe 13.02.2019 14:01:09 | | |
Această postare a fost editată ultima dată de Summer pe 2019-2-13, 14:04

În 2009, programatorul american Ryan Dahl a creat node.js proiect pentru a folosi limbajul JavaScript în programarea serverului.

Aceasta marchează nașterea "programării modulare Javascript". Complexitatea front-end-ului este limitată și este în regulă să nu existe module, dar pe partea de server trebuie să existe module pentru a interacționa cu sistemul de operare și alte aplicații, altfel nu poate fi programat deloc.

Una dintre cele mai importante idei în programarea nodurilor sunt modulele, iar această idee face posibilă ingineria la scară largă a JavaScript. Programarea modulară era populară în lumea JS și se baza pe asta, iar pe partea browserului au apărut, ca să zic așa, sub specificația corespunzătoare, tot programarea modulară care să ruleze înainte de ES6, chiar și acum, înainte ca modulul ES6 să fie complet implementat.

În CommonJS, modulul de expunere folosește module.exports și exports, iar mulți oameni nu înțeleg de ce există două obiecte expuse, care vor fi introduse mai târziu

În CommonJS, există o metodă globală require() care este folosită pentru încărcarea modulelor. Presupunând că există un modul de matematică math.js, acesta poate fi încărcat astfel.



Poți apoi să numești metodele oferite de modul:

Tocmai datorită metodei require folosită de CommonJS, metoda require folosită de AMD și CMD a fost folosită ulterior pentru a se referi la stilul modulelor

Specificațiile AMD

Cu modulele pe partea serverului, este firesc ca toată lumea să vrea module pe partea clientului. Și cel mai bine este ca cele două să fie compatibile, iar un modul să poată rula atât pe server, cât și pe browser fără modificări.

Totuși, există o limitare majoră care face ca specificația CommonJS să nu fie aplicabilă mediilor de browser. Totuși, codul din secțiunea anterioară, dacă rulează într-un browser, va apărea o problemă mare



A doua linie math.add(2, 3) rulează după prima linie require('math'), deci trebuie să aștepte ca math.js încărcare să se termine. Adică, dacă timpul de încărcare este lung, întreaga aplicație se va opri acolo și va aștepta.

Aceasta nu reprezintă o problemă pe partea de server, deoarece toate modulele sunt stocate pe hard disk-ul local și pot fi încărcate sincron, iar timpul de așteptare este timpul de citire al hard disk-ului. Totuși, pentru browsere, aceasta este o problemă mare, deoarece modulele sunt plasate pe partea de server, iar timpul de așteptare depinde de viteza Internetului, care poate dura mult, iar browserul se află într-o stare de "moarte suspendată".


Prin urmare, modulele de pe partea browserului nu pot folosi "sincron", ci pot folosi doar "asincron". Acesta este contextul nașterii specificației AMD.

AMD este o abreviere pentru "Definiția modulului asincron", care înseamnă "Definiție a modulului asincron". Acesta încarcă modulul asincron, iar încărcarea modulului nu afectează funcționarea instrucțiunilor ulterioare. Toate instrucțiunile care depind de acest modul sunt definite într-o funcție de callback care nu va rula până când încărcarea nu este completă.

Modulele trebuie definite cu o funcție specifică define().


•ID: șir, numele modulului (opțional)
• dependențe: este modulul dependent pe care dorim să-l încărcăm (opțional), folosind calea relativă. , rețineți că este un format de tablă
•fabrică: metoda fabricii, returnează o funcție de modul
Dacă un modul nu depinde de alte module, poate fi definit direct în funcția define().


Dacă modulul depinde și de alte module, atunci primul argument al funcției define() trebuie să fie un tablou care indică dependențele modulului.



Când funcția requir() încarcă modulul de mai sus, va încărca mai întâi Lib.js fișier.

AMD folosește, de asemenea, instrucțiunea requir() pentru a încărca modulul, dar spre deosebire de CommonJS, necesită doi parametri:

Primul parametru [modul] este un tablou, iar membrii acestuia sunt modulele ce urmează a fi încărcate; Al doilea parametru de callback este funcția de callback după ce încărcarea este reușită. Dacă rescrii codul anterior în formă AMD, arată astfel:


math.add() nu este sincronizat cu încărcarea modulului de matematică, iar browserul nu suspendă animația. Deci, evident, AMD este mai potrivit pentru mediul browserului.

În prezent, există două biblioteci principale Javascript care implementează specificațiile AMD :require.js și curl.js.







Precedent:init: function (){}方法的写法原因
Următor:【Luptă practică】Kibana 6.5.2 Tutorial chinezesc chinez
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com