Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 9631|Svar: 0

[JavaScript] regore()-satsen AMD-specifikationen

[Kopiera länk]
Publicerad på 2019-02-13 14:01:09 | | |
Detta inlägg redigerades senast av Summer den 2019-2-13 kl. 14:04

År 2009 skapade den amerikanske programmeraren Ryan Dahl node.js projekt för att använda JavaScript-språket för serverbaserad programmering.

Detta markerar födelsen av "Javascript modulär programmering". Komplexiteten i front-end är begränsad, och det är okej att inte ha några moduler, men på serversidan måste det finnas moduler för att interagera med operativsystemet och andra applikationer, annars kan det inte programmeras alls.

En av de viktigaste idéerna inom nodprogrammering är moduler, och det är denna idé som gör storskalig ingenjörskonst av JavaScript möjlig. Modulär programmering var populärt i JS-världen, och den baserades på detta, och sedan på webbläsarsidan dök verktygssatser som requirejs och seajs också upp, så att säga, under motsvarande specifikation, krävde all modulär programmering före ES6, även nu, innan ES6-modulen var fullt implementerad.

I CommonJS använder exponeringsmodulen module.exports och exports, och många förstår inte varför det finns två exponerade objekt, som kommer att introduceras senare

I CommonJS finns en global metod rescribre() som används för att ladda moduler. Om det finns en matematikmodul math.js kan den laddas så här.



Du kan sedan anropa metoderna som erbjuds av modulen:

Det är just på grund av demand-metoden som används av CommonJS som demand-metoden som används av AMD och CMD senare också användes för att referera till modulernas typ

AMD-specifikation

Med servermoduler är det naturligt att alla vill ha klientmoduler. Och det är bäst att de två är kompatibla, och att en modul kan köras både på servern och webbläsaren utan ändringar.

Det finns dock en stor begränsning som gör att CommonJS-specifikationen inte är tillämplig på webbläsarmiljöer. Men koden från föregående avsnitt, om den körs i en webbläsare, kommer det att uppstå ett stort problem



Den andra raden math.add(2, 3) körs efter den första raden rescribe('math'), så den måste vänta på att math.js laddning ska bli klar. Det vill säga, om laddningstiden är lång stannar hela appen där och väntar.

Detta är inget problem på serversidan, eftersom alla moduler lagras på den lokala hårddisken och kan laddas synkront, och väntetiden är hårddiskens lästid. För webbläsare är detta dock ett stort problem, eftersom modulerna placeras på serversidan, och väntetiden beror på internethastigheten, vilket kan ta lång tid, och webbläsaren befinner sig i ett "suspenderat död"-tillstånd.


Därför kan webbläsarmoduler inte använda "synkron", utan endast "asynkron". Detta är bakgrunden till födelsen av AMD-specifikationen.

AMD är en förkortning för "Asynchronous Module Definition", vilket betyder "Asynchronous Module Definition". Den laddar modulen asynkront, och laddningen av modulen påverkar inte funktionen av dess efterföljande satser. Alla satser som är beroende av denna modul definieras i en callback-funktion som inte körs förrän laddningen är klar.

Moduler måste definieras med en specifik define()-funktion.


•ID: sträng, modulnamn (valfritt)
•Beroenden: är den beroende modul vi vill ladda (valfritt), med hjälp av den relativa vägen. , observera att det är ett arrayformat
•factory: factory-metoden, returnerar en modulfunktion
Om en modul inte beror på andra moduler kan den definisera direkt i define()-funktionen.


Om modulen också beror på andra moduler måste det första argumentet i define()-funktionen vara en array som anger modulens beroenden.



När funktionen require() laddar ovanstående modul kommer den att ladda Lib.js fil först.

AMD använder också require()-satsen för att ladda modulen, men till skillnad från CommonJS kräver den två parametrar:

Den första parametern [modul] är en array, och medlemmarna i den är modulerna som ska laddas; Den andra parametercallbacken är callback-funktionen efter att lasten har lyckats. Om du skriver om den tidigare koden till AMD-form ser det ut så här:


math.add() är inte synkroniserad med att matematikmodulen laddas, och webbläsaren suspenderar inte animationen. Så uppenbarligen är AMD mer lämpad för webbläsarmiljön.

För närvarande finns det två huvudsakliga Javascript-bibliotek som implementerar AMD-specifikationen :require.js och curl.js.







Föregående:init: function (){}方法的写法原因
Nästa:【Praktisk strid】Kibana 6.5.2 Kinesisk kinesisk handledning
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com