Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 9631|Vastaus: 0

[JavaScript] require() lause AMD-määrittelyä

[Kopioi linkki]
Julkaistu 13.2.2019 14.01.09 | | |
Tätä julkaisua on viimeksi muokannut Summer 13.2.2019 klo 14:04

Vuonna 2009 amerikkalainen ohjelmoija Ryan Dahl loi node.js projektin, jossa käytetään JavaScript-kieltä palvelinpuolen ohjelmointiin.

Tämä merkitsee "Javascript-modulaarisen ohjelmoinnin" syntyä. Front-endin monimutkaisuus on rajallinen, ja on ihan ok, ettei moduuleja ole, mutta palvelinpuolella täytyy olla moduuleja, jotka voivat olla vuorovaikutuksessa käyttöjärjestelmän ja muiden sovellusten kanssa, muuten sitä ei voi ohjelmoida lainkaan.

Yksi tärkeimmistä ideoista solmuohjelmoinnissa ovat moduulit, ja juuri tämä ajatus mahdollistaa JavaScriptin laajamittaisen suunnittelun. Modulaarinen ohjelmointi oli suosittua JS-maailmassa, ja se perustui tähän, ja sitten selainpuolella ilmestyivät myös työkalupakit kuten requirejs ja seajs, niin sanotusti, vastaavan spesifikaation mukaisesti, vaativat hallitsevat kaiken modulaarisen ohjelmoinnin ennen ES6:ta, jopa nyt, ennen kuin ES6-moduuli oli täysin toteutettu.

CommonJS:ssä altistusmoduuli käyttää module.exportsia ja exportsia, ja monet eivät ymmärrä, miksi on kaksi altistunutta objektia, jotka esitellään myöhemmin

CommonJS:ssä on globaali menetelmä require(), jota käytetään moduulien lataamiseen. Oletetaan, että matemaattinen moduuli on math.js, se voidaan ladata näin.



Voit sitten kutsua moduulin tarjoamia metodeja:

Juuri CommonJS:n käyttämän vaatimismenetelmän vuoksi AMD:n ja CMD:n käyttämä vaatimusmenetelmä viittasi myöhemmin moduulien tyyliin

AMD:n määrittely

Palvelinpuolen moduuleissa on luonnollista, että kaikki haluavat asiakaspuolen moduuleja. Ja on parasta, että molemmat ovat yhteensopivia, ja moduuli voi toimia sekä palvelimella että selaimella ilman muutoksia.

Kuitenkin on olemassa merkittävä rajoitus, joka tekee CommonJS-määrittelystä käyttökelvottoman selainympäristöissä. Silti edellisen osion koodi, jos se ajetaan selaimessa, tulee iso ongelma



Toinen rivi math.add(2, 3) käynnistyy ensimmäisen rivin vaatimuksen ('math') jälkeen, joten sen täytyy odottaa, että math.js lataus valmistuu. Eli jos latausaika on pitkä, koko sovellus pysähtyy siihen ja odottaa.

Tämä ei ole ongelma palvelinpuolella, koska kaikki moduulit tallennetaan paikalliselle kiintolevylle ja ne voidaan ladata synkronisesti, ja odotusaika on kiintolevyn lukuaika. Selaimille tämä on kuitenkin iso ongelma, koska moduulit sijoitetaan palvelinpuolelle, ja odotusaika riippuu internetin nopeudesta, joka voi kestää kauan, ja selain on "keskeytetyn kuoleman" tilassa.


Siksi selaimen puolen moduulit eivät voi käyttää "synkronista", vaan ainoastaan "asynkronista". Tämä on tausta AMD-määrittelyn syntylle.

AMD on lyhenne sanoista "Asynchronous Module Definition", joka tarkoittaa "Asynchronous Module Definition". Se lataa moduulin asynkronisesti, eikä moduulin kuormitus vaikuta sen myöhempien lauseiden toimintaan. Kaikki lauseet, jotka riippuvat tästä moduulista, määritellään callback-funktiossa, joka ei käynnisty ennen kuin lataus on valmis.

Moduulit on määriteltävä tietyllä define()-funktiolla.


•ID: merkkijono, moduulin nimi (valinnainen)
•Dependencies: on riippuvainen moduuli, jonka haluamme ladata (valinnaisena), käyttäen suhteellista polkua. , huomaa, että kyseessä on taulukkomuoto
•tehdas: tehdasmenetelmä, palauttaa moduulifunktion
Jos moduuli ei riipu muista moduuleista, se voidaan määritellä suoraan define()-funktiossa.


Jos moduuli riippuu myös muista moduuleista, define()-funktion ensimmäisen argumentin täytyy olla taulukko, joka ilmaisee moduulin riippuvuudet.



Kun require()-funktio lataa yllä mainitun moduulin, se lataa ensin Lib.js tiedoston.

AMD käyttää myös require()-lausetta moduulin lataamiseen, mutta toisin kuin CommonJS, se vaatii kaksi parametria:

Ensimmäinen parametri [module] on taulukko, ja sen jäsenet ovat ladattavat moduulit; Toinen parametrin takaisinkutsu on callback-funktio kuormituksen onnistumisen jälkeen. Jos kirjoitat edellisen koodin uudelleen AMD-muotoon, se näyttää tältä:


math.add() ei ole synkronoitu matematiikkamoduulin latauksen kanssa, eikä selain keskeytä animaatiota. Joten on selvää, että AMD sopii paremmin selainympäristöön.

Tällä hetkellä on kaksi pääasiallista Javascript-kirjastoa, jotka toteuttavat AMD-määrittelyn :require.js ja curl.js.







Edellinen:init: function (){}方法的写法原因
Seuraava:【Käytännön taistelu】Kibana 6.5.2 Kiinan kiinankielinen opetusohjelma
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com