Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 9631|Atsakyti: 0

[JavaScript] require() pareiškimas AMD specifikacija

[Kopijuoti nuorodą]
Paskelbta 2019-02-13 14:01:09 | | |
Šį pranešimą paskutinį kartą redagavo Vasara 2019-2-13 14:04

2009 m. amerikiečių programuotojas Ryanas Dahlas sukūrė node.js projektą, skirtą naudoti JavaScript kalbą serverio programavimui.

Tai žymi "Javascript modulinio programavimo" gimimą. Priekinės dalies sudėtingumas yra ribotas, ir gerai, jei nėra modulių, tačiau serverio pusėje turi būti moduliai, skirti sąveikauti su operacine sistema ir kitomis programomis, kitaip jo visai negalima užprogramuoti.

Viena iš svarbiausių mazgų programavimo idėjų yra moduliai, ir būtent ši idėja leidžia didelio masto JavaScript inžineriją. Modulinis programavimas buvo populiarus JS pasaulyje, ir jis buvo pagrįstas tuo, o tada naršyklės pusėje taip pat atsirado įrankių rinkiniai, tokie kaip requirejs ir seajs, taip sakant, pagal atitinkamą specifikaciją, reikalauja valdyti visą modulinį programavimą prieš ES6, net ir dabar, kol ES6 modulis buvo visiškai įdiegtas.

CommonJS ekspozicijos modulis naudoja module.exports ir exports, ir daugelis žmonių nesupranta, kodėl yra du eksponuojami objektai, kurie bus pristatyti vėliau

CommonJS yra visuotinis metodas require(), kuris naudojamas moduliams įkelti. Darant prielaidą, kad yra matematikos modulio math.js, jis gali būti įkeltas taip.



Tada galite iškviesti modulio pateiktus metodus:

Būtent dėl CommonJS naudojamo reikalavimo metodo AMD ir CMD naudojamas metodas taip pat vėliau naudojamas modulių stiliui nurodyti

AMD specifikacija

Naudojant serverio modulius, natūralu, kad visi nori kliento pusės modulių. Geriausia, kad jie abu būtų suderinami, o modulis galėtų veikti tiek serveryje, tiek naršyklėje be pakeitimų.

Tačiau yra didelis apribojimas, dėl kurio "CommonJS" specifikacija netaikoma naršyklės aplinkai. Vis dėlto kodas iš ankstesnio skyriaus, jei jis veikia naršyklėje, kils didelė problema



Antroji eilutė math.add(2, 3) eina po pirmosios eilutės require('math'), todėl reikia palaukti, kol baigsis math.js apkrova. Tai yra, jei įkėlimo laikas ilgas, visa programa sustos ir lauks.

Tai nėra problema serverio pusėje, nes visi moduliai yra saugomi vietiniame standžiajame diske ir gali būti įkelti sinchroniškai, o laukimo laikas yra standžiojo disko skaitymo laikas. Tačiau naršyklėms tai yra didelė problema, nes moduliai dedami į serverio pusę, o laukimo laikas priklauso nuo interneto greičio greičio, kuris gali užtrukti ilgai, o naršyklė yra "sustabdytos mirties" būsenoje.


Todėl naršyklės moduliai negali naudoti "sinchroninio", o gali naudoti tik "asinchroninį". Tai yra AMD specifikacijos gimimo pagrindas.

AMD yra "Asinchroninio modulio apibrėžimo" santrumpa, reiškianti "Asinchroninio modulio apibrėžimas". Jis įkelia modulį asinchroniškai, o modulio įkėlimas neturi įtakos vėlesnių jo teiginių veikimui. Visi sakiniai, priklausantys nuo šio modulio, apibrėžiami atgalinio iškvietimo funkcijoje, kuri nebus vykdoma, kol nebus baigtas įkėlimas.

Moduliai turi būti apibrėžti su konkrečia define() funkcija.


•ID: eilutė, modulio pavadinimas (pasirinktinai)
•Priklausomybės: yra priklausomas modulis, kurį norime įkelti (pasirinktinai), naudojant santykinį kelią. , atkreipkite dėmesį, kad tai yra masyvo formatas
•gamyklinis: gamyklinis metodas, grąžina modulio funkciją
Jei modulis nepriklauso nuo kitų modulių, jį galima apibrėžti tiesiogiai funkcijoje define().


Jei modulis taip pat priklauso nuo kitų modulių, tada pirmasis funkcijos define() argumentas turi būti masyvas, nurodantis modulio priklausomybes.



Kai funkcija require() įkelia aukščiau pateiktą modulį, ji pirmiausia įkels Lib.js failą.

AMD taip pat naudoja require() sakinį moduliui įkelti, tačiau, skirtingai nei CommonJS, jam reikalingi du parametrai:

Pirmasis parametras [modulis] yra masyvas, o jame esantys nariai yra įkeliami moduliai; Antrasis parametro atgalinis iškvietimas yra atgalinio skambinimo funkcija po sėkmingo įkėlimo. Jei perrašysite ankstesnį kodą į AMD formą, jis atrodo taip:


math.add() nesinchronizuojamas su matematinio modulio įkėlimu, o naršyklė nesustabdo animacijos. Taigi akivaizdu, kad AMD labiau tinka naršyklės aplinkai.

Šiuo metu yra dvi pagrindinės "Javascript" bibliotekos, kurios įgyvendina AMD specifikaciją :require.js ir curl.js.







Ankstesnis:init: function (){}方法的写法原因
Kitą:【Praktinė kova】 Kibana 6.5.2 kinų kinų pamoka
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com