Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 9631|Svar: 0

[JavaScript] re()-sætningen AMD-specifikationen

[Kopier link]
Opslået på 13/02/2019 14.01.09 | | |
Dette indlæg blev sidst redigeret af Summer den 2-2-2019 kl. 14:04

I 2009 skabte den amerikanske programmør Ryan Dahl node.js projekt til at bruge JavaScript-sproget til server-side programmering.

Dette markerer fødslen af "Javascript modulær programmering". Kompleksiteten af front-end er begrænset, og det er okay ikke at have moduler, men på serversiden skal der være moduler til at interagere med operativsystemet og andre applikationer, ellers kan det slet ikke programmeres.

En af de vigtigste idéer inden for node-programmering er moduler, og det er denne idé, der gør storskala engineering af JavaScript mulig. Modulær programmering var populært i JS-verdenen, og det var baseret på dette, og på browsersiden dukkede der også værktøjssæt som requireiks og seajs op, så at sige, under den tilsvarende specifikation, krævede styret al modulær programmering før ES6, og endda nu, før ES6-modulet var fuldt implementeret.

I CommonJS bruger exposure-modulet module.exports og exports, og mange forstår ikke, hvorfor der er to eksponerede objekter, som vil blive introduceret senere

I CommonJS findes der en global metode rescribe(), som bruges til at indlæse moduler. Hvis der findes et matematikmodul math.js, kan det indlæses sådan her.



Du kan derefter kalde de metoder, modulet leverer:

Det er netop på grund af den kravmetode, som CommonJS bruger, at kravmetoden brugt af AMD og CMD senere også blev brugt til at henvise til modulernes stil

AMD-specifikation

Med server-side moduler er det naturligt, at alle ønsker klient-side moduler. Og det er bedst, at de to er kompatible, og at et modul kan køre både på serveren og browseren uden ændringer.

Der er dog en væsentlig begrænsning, som gør CommonJS-specifikationen uanvendelig i browsermiljøer. Alligevel gælder koden fra det forrige afsnit, hvis den kører i en browser, vil der opstå et stort problem



Den anden linje math.add(2, 3) kører efter den første linje requirre('math'), så den skal vente på, at math.js indlæsning er færdig. Det vil sige, hvis indlæsningstiden er lang, stopper hele appen der og venter.

Dette er ikke et problem på serversiden, fordi alle moduler gemmes på den lokale harddisk og kan indlæses synkront, og ventetiden er harddiskens læsetid. For browsere er dette dog et stort problem, fordi modulerne er placeret på serversiden, og ventetiden afhænger af internethastigheden, som kan tage lang tid, og browseren befinder sig i en "suspenderet død"-tilstand.


Derfor kan browser-side moduler ikke bruge "synkron", men kun "asynkron". Dette er baggrunden for fødslen af AMD-specifikationen.

AMD er en forkortelse for "Asynchronous Module Definition", som betyder "Asynchronous Module Definition". Den indlæser modulet asynkront, og indlæsningen af modulet påvirker ikke driften af dets efterfølgende sætninger. Alle sætninger, der afhænger af dette modul, defineres i en callback-funktion, der ikke kører, før indlæsningen er fuldført.

Moduler skal defineres med en specifik define()-funktion.


•ID: streng, modulnavn (valgfrit)
•afhængigheder: er det afhængige modul, vi ønsker at indlæse (valgfrit), ved brug af den relative sti. , bemærk at det er et arrayformat
•factory: factory-metoden, returnerer en modulfunktion
Hvis en modul ikke afhænger af andre moduler, kan den defineres direkte i define()-funktionen.


Hvis modulet også afhænger af andre moduler, må det første argument i define()-funktionen være et array, der angiver modulets afhængigheder.



Når funktionen require() indlæser ovenstående modul, indlæser den først filen Lib.js.

AMD bruger også require()-sætningen til at indlæse modulet, men i modsætning til CommonJS kræver den to parametre:

Den første parameter [modul] er et array, og medlemmerne i det er de moduler, der skal indlæses; Den anden parameter callback er callback-funktionen efter loaden er succesfuld. Hvis du omskriver den tidligere kode til AMD-form, ser det sådan ud:


math.add() er ikke synkroniseret med indlæsning af matematikmodulet, og browseren suspenderer ikke animation. Så det er åbenlyst, at AMD er mere egnet til browsermiljøet.

I øjeblikket er der to hovedbiblioteker i Javascript, der implementerer AMD-specifikationen :require.js og curl.js.







Tidligere:init: function (){}方法的写法原因
Næste:【Praktisk kamp】Kibana 6.5.2 Kinesisk Kinesisk Vejledning
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com