mia comprensione di moduli AMD (utilizzando per esempio RequireJs o curl.js) è:Con i moduli AMD, quando (o perché) è OK utilizzare use() all'interno di define()?
require()
viene utilizzata per caricare in modo asincrono moduli diversi e quando caricato quindi viene eseguita la richiamata fn.
e di definire un modulo, si avrebbe script separati che utilizzano define()
ma ho visto alcuni moduli usano require()
all'interno della loro definizione di funzione, per esempio
define([a, b, c], function(i, ii, iii){
require([d, e, f], function(d, e, f) {
// do some stuff with these require()'d dependancies
})
/* rest of the code for this module */
})
ma trovo questa confusione perché avrei pensato che se un modulo ha dipendenze allora dovrebbero essere attraversato tramite la funzione principale define([dependancies], fnDefinition)
e non all'interno di esso tramite require()
come per l'esempio di cui sopra sta facendo.
C'è un ragionamento dietro questo?
collegamento migliore che posso trovare per has.js: http://mail.dojotoolkit.org/pipermail/dojo-contributors/2011-January/023462.html Non spiega il plugin, lo menziona semplicemente. – unscriptable
se qualcuno ha abbastanza punti per creare un tag curljs, lo apprezzerei! :) – unscriptable
Quindi, se ho un modulo che ha bisogno di certe funzionalità che non sono disponibili in tutti i browser, posso definire il modulo come normale e poi dentro posso fare un controllo condizionale e poi richiedere() i moduli rilevanti che hanno il polyfill mancante funzionalità, giusto? E suppongo che in "tempo di compilazione" potrei ancora minimizzare quel modulo usando il mio script di build, quindi non è che sto caricando in modo asincrono uno script di modulo non minorato. – Integralist