Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 9631|Risposta: 0

[JavaScript] istruzione requir() specifica AMD

[Copiato link]
Pubblicato su 13/02/2019 14:01:09 | | |
Questo post è stato modificato l'ultima volta da Summer il 13-2-2019 alle 14:04

Nel 2009, il programmatore americano Ryan Dahl ha creato node.js progetto per utilizzare il linguaggio JavaScript per la programmazione lato server.

Questo segna la nascita della "programmazione modulare Javascript". La complessità del front-end è limitata, e va bene non avere moduli, ma lato server devono esserci moduli per interagire con il sistema operativo e altre applicazioni, altrimenti non può essere programmato affatto.

Una delle idee più importanti nella programmazione dei nodi sono i moduli, ed è proprio questa idea che rende possibile l'ingegneria su larga scala di JavaScript. La programmazione modulare era popolare nel mondo JS, e si basava su questo, e poi, sul lato browser, sono apparsi anche toolkit come requirejs e seajs, per così dire, sotto la specifica corrispondente, che richiedeva tutte le regle modulari precedenti a ES6, anche oggi, prima che il modulo ES6 fosse completamente implementato.

In CommonJS, il modulo esposizione utilizza module.exports ed exports, e molte persone non capiscono perché ci siano due oggetti esposti, che verranno introdotti più avanti

In CommonJS, esiste un metodo globale require() che viene utilizzato per caricare i moduli. Supponendo che ci sia un modulo matematico math.js, può essere caricato così.



Puoi quindi chiamare i metodi forniti dal modulo:

È proprio a causa del metodo di richiesta usato da CommonJS che il metodo di richiesta usato da AMD e CMD è stato usato successivamente anche per riferirsi allo stile dei moduli

Specifiche AMD

Con i moduli lato server, è naturale che tutti desiderino moduli lato client. Ed è meglio che i due siano compatibili, e che un modulo possa girare sia sul server che sul browser senza modifiche.

Tuttavia, esiste una limitazione importante che rende la specifica CommonJS inapplicabile agli ambienti browser. Comunque il codice della sezione precedente, se gira in un browser, ci sarà un grosso problema



La seconda riga math.add(2, 3) viene eseguita dopo la prima riga require('math'), quindi deve aspettare che math.js caricamento finisca. Cioè, se il tempo di caricamento è lungo, l'intera app si fermerà lì e aspetterà.

Questo non è un problema sul lato server, perché tutti i moduli sono memorizzati sull'hard disk locale e possono essere caricati in sincrono, e il tempo di attesa è il tempo di lettura del disco rigido. Tuttavia, per i browser, questo è un grosso problema, perché i moduli sono posizionati lato server e il tempo di attesa dipende dalla velocità di Internet, che può richiedere molto tempo, e il browser si trova in uno stato di "morte sospesa".


Pertanto, i moduli lato browser non possono usare "sincrono", ma possono solo usare "asincrono". Questo è il contesto della nascita della specifica AMD.

AMD è un'abbreviazione di "Definizione di Modulo Asincrono", che significa "Definizione di Modulo Asincrono". Carica il modulo in modo asincrono, e il caricamento del modulo non influisce sul funzionamento delle sue istruzioni successive. Tutte le istruzioni che dipendono da questo modulo sono definite in una funzione callback che non verrà eseguita fino al completamento del caricamento.

I moduli devono essere definiti con una funzione specifica define().


•ID: stringa, nome del modulo (opzionale)
•dipendenze: è il modulo dipendente che vogliamo caricare (opzionale), usando il percorso relativo. , si noti che si tratta di un formato array
•factory: metodo factory, restituisce una funzione modulo
Se un modulo non dipende dagli altri moduli, può essere definito direttamente nella funzione define().


Se il modulo dipende anche da altri moduli, allora il primo argomento della funzione define() deve essere un array che indica le dipendenze del modulo.



Quando la funzione requir() carica il modulo sopra, caricherà prima Lib.js file.

AMD utilizza anche l'istruzione requir() per caricare il modulo, ma a differenza di CommonJS, richiede due parametri:

Il primo parametro [modulo] è un array, e i suoi membri sono i moduli da caricare; Il secondo parametro chiamato è la funzione di callback dopo che il carico è riuscito. Se riscrivisti il codice precedente in forma AMD, appare così:


math.add() non è sincronizzato con il caricamento del modulo matematico e il browser non sospende l'animazione. Quindi, ovviamente, AMD è più adatta all'ambiente browser.

Attualmente, esistono due principali librerie Javascript che implementano la specifica AMD :require.js e curl.js.







Precedente:init: function (){}方法的写法原因
Prossimo:【Combattimento Pratico】Kibana 6.5.2 Tutorial cinese
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com