Il RequireJS docs afferma che per supportare versioni precedenti di IE, è necessario configurare enforceDefine: true
.Bootstrap Twitter Shim per RequireJS
Quindi, se si desidera supportare Internet Explorer, errori di caricamento di cattura, e hanno il codice modulare sia attraverso diretta define() chiama o spessore di configurazione, impostare sempre enforceDefine per essere vero. Vedi la prossima sezione per un esempio.
NOTA: Se si imposta enforceDefine: true, e si utilizza data-main = "" per caricare il modulo JS principale, allora quel modulo JS principale deve chiamare define() invece di require() per caricare il codice esigenze. Il modulo JS principale può ancora chiamare require/requirejs per impostare i valori di configurazione, ma per caricare i moduli dovrebbe usare define().
Dal momento che Twitter Bootstrap non è un modulo AMD, ho bisogno di spingerlo per farlo funzionare. Ecco come lo configuro;
<script type="text/javascript">
var require = {
paths: {
"bootstrap": "../bootstrap",
"jquery": "../jquery-1.8.2"
},
shim: {
"bootstrap": ["jquery"]
},
enforceDefine: true
};
</script>
Più tardi, quando il mio modulo vuole bootstrap come una dipendenza, ho ancora finire con un messaggio di errore;
Error: No define call for bootstrap
http://requirejs.org/docs/errors.html#nodefine
Se ho capito bene la documentazione, enforceDefine
dovrebbe ignorare spessori ma non lo è.
Cosa sto facendo di sbagliato qui?
Per quelli di noi nuovi a JS, come useresti il popover nel tuo codice? Con require posso dire "var $ = require ('jquery') dovrei scrivere" var popover = require ("$. Fn.popover")? – KingAndrew
No. Il comando richiede il percorso del modulo nel file system come argomento. In questo caso puoi solo richiedere ("bootstrap") e poi usarlo solo $ ("# esempio"). Popover(). Potresti richiedere singoli plug-in di bootstrap se utilizzi le versioni nononcatenate, ma ciò richiederebbe una maggiore configurazione. In generale i plugin jQuery che si collegano a $ .fn non sono molto compatibili con la filosofia del modulo CJS/AMD. – Karolis
E se fosse necessario accedere a più plug-in? C'è un modo per avere più esportazioni con requirejs? o avresti più shim per ogni plugin? o qualcos'altro? –