Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 9631|Válasz: 0

[JavaScript] require() állítás AMD specifikáció

[Linket másol]
Közzétéve 2019. 02. 13. 14:01:09 | | |
Ezt a bejegyzést utoljára Summer szerkesztette: 2019-2-13, 14:04

2009-ben az amerikai programozó, Ryan Dahl létrehozott node.js projektet, amely a JavaScript nyelvet használja szerveroldali programozáshoz.

Ez a "Javascript moduláris programozás" születését jelzi. A frontend összetettsége korlátozott, és rendben van, ha nincsenek modulok, de a szerver oldalon moduloknak kell lenniük, amelyek az operációs rendszerrel és más alkalmazásokkal interakcióba léphetnek, különben egyáltalán nem programozható.

A csomópont-programozás egyik legfontosabb ötlete a modulok, és ez az ekép teszi lehetővé a JavaScript nagyszabású mérnöki megvalósítását. A moduláris programozás népszerű volt a JS világában, és ezen alapult, majd a böngésző oldalon megjelentek olyan eszközkészletek, mint a requirejs és a seajs, úgymondom, a megfelelő specifikáció alá tartozó előírások szerint minden moduláris programozást az ES6 előtt, még most is, még az ES6 modul teljes megvalósítása előtt is.

A CommonJS-ben az expozíciós modul a module.exports és exports funkciókat használja, és sokan nem értik, miért van két exponált objektum, amelyeket később bemutatunk

A CommonJS-ben létezik egy globális require() módszer, amelyet modulok betöltésére használnak. Ha van math.js matematikai modul, így be lehet tölteni.



Ezután hívhatod a modul által biztosított metódusokat:

Éppen a CommonJS által használt required módszer miatt az AMD és a CMD által később használt require módszert is használták a modulok stílusára

AMD specifikáció

Szerveroldali moduloknál természetes, hogy mindenki kliensoldali modulokat szeretne használni. És a legjobb, ha a kettő kompatibilis, és egy modul módosítás nélkül fut mind a szerveren, mind a böngészőn.

Ugyanakkor van egy jelentős korlát, amely miatt a CommonJS specifikáció nem alkalmazható böngészőkörnyezetekben. Még mindig az előző rész kódja, ha böngészőben fut, nagy probléma lesz



A második sor math.add(2, 3) az első sorra ('math') után fut, így várnia kell, hogy math.js betöltés befejeződjön. Vagyis ha hosszú a betöltési idő, az egész alkalmazás ott megáll és vár.

Ez nem probléma a szerver oldalon, mivel minden modul a helyi merevlemezen van tárolva, és szinkron módon tölthető, a várakozási idő pedig a merevlemez olvasási ideje. Azonban böngészők esetében ez nagy probléma, mivel a modulok a szerver oldalon helyezkednek el, és a várakozási idő az internet sebességétől függ, ami sokáig tarthat, és a böngésző "felfüggesztett halál" állapotban van.


Ezért a böngészőoldali modulok nem használhatják a "szinkron" funkciót, hanem csak az "aszinkron" funkciót. Ez az AMD specifikáció születésének háttere.

Az AMD a "Aszinkron modul definíció" rövidítése, ami azt jelenti, hogy "aszinkron modul definíció". Aszinkron módon tölti be a modult, és a modul betöltése nem befolyásolja a következő állítások működését. Minden olyan állítás, amely ettől a modultól függ, egy visszahívási függvényben definiálható, amely csak a betöltés befejezésével indul el.

A modulokat egy specifikus define() függénnyel kell definiálni.


•ID: string, modul név (opcionális)
•dependencies: az a függő modul, amit be akarunk tölteni (opcionális), a relatív út használatával. , megjegyzendő, hogy ez egy tömbformátum
•factory: factory method, modul függvényt ad vissza
Ha egy modul nem függ más moduloktól, akkor közvetlenül definiálható a define() függvényben.


Ha a modul más moduloktól is függ, akkor a define() függvény első argumentumának egy olyan tömbnek kell lennie, amely jelzi a modul függőségeit.



Amikor a require() függvény betölti a fenti modult, először Lib.js fájlt tölti be.

Az AMD a require() utasítást is használja a modul betöltéséhez, de a CommonJS-szel ellentétben két paramétert igényel:

Az első paraméter [module] egy tömb, és a tagok a betöltésre váró modulok; A második paramétervisszahívás a visszahívás függvény a betöltés sikere után. Ha az előző kódot AMD formába írod át, így néz ki:


A math.add() nem szinkronizált a matematika modul betöltésével, és a böngésző nem szünteti meg az animációt. Tehát nyilvánvalóan az AMD jobban illik a böngészőkörnyezethez.

Jelenleg két fő Javascript könyvtár működik, amelyek az AMD specifikációját hajtják végre :require.js és curl.js.







Előző:init: function (){}方法的写法原因
Következő:【Gyakorlati harc】Kibana 6.5.2 Kínai kínai oktató
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com