2013-08-20 10 views
6

Devo utilizzare la libreria Q (http://documentup.com/kriskowal/q/) nel browser. Vorrei usare RequireJS per caricare questa libreria, ma non ho idea di come farlo. So come caricare il mio modulo, ma non posso farlo con Q. Ha qualche funzione:Utilizzo della libreria Q nel browser

(function (definition) { 
    //some another code here*** 
    // RequireJS 
} else if (typeof define === "function" && define.amd) { 
    define(definition); 

Come posso caricare Q e poi utilizzarlo in un altro modulo?

risposta

3

Si può semplicemente caricare la libreria Q utilizzando un'istruzione di script nel codice HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/q.js/1.1.0/q.js"></script> 

Quindi è possibile accedere tramite la variabile Q in questo modo:

function square(x) { 
    return x * x; 
} 
function plus1(x) { 
    return x + 1; 
} 

Q.fcall(function() {return 4;}) 
.then(plus1) 
.then(square) 
.then(function(z) { 
    alert("square of (value+1) = " + z); 
}); 

Vai a questa esecuzione a http://jsfiddle.net/Uesyd/1/

+6

Mentre funziona, penso che sia una cattiva idea, dal momento che significa che stai mescolando codice modulare (cioè AMD/RequireJS) e "tradizionale" (cioè variabili globali) che può causare problemi a lungo termine. – kryger

+0

https://rawgithub.com/kriskowal/q/master/q.js - non trovato –

14

Il modo corretto di farlo è quello di AMD (codice di esempio preso in prestito da @Eamonn O'Brien-Strain):

requirejs.config({ 
    paths: { 
    Q: 'lib/q' 
    } 
}); 

function square(x) { 
    return x * x; 
} 

function plus1(x) { 
    return x + 1; 
} 

require(["Q"], function (q) { 
    q.fcall(function() { 
    return 4; 
    }) 
    .then(plus1) 
    .then(square) 
    .then(function (z) { 
     alert("square of (value+1) = " + z); 
    }); 
}); 

In questo modo, Q non perde la portata globale ed è facile trovare tutti i moduli in base a questa libreria.

+1

Probabilmente, è richiesta anche una voce nella struttura shim, perché non è un modulo AMD: 'shim: { 'Q' : { esportazioni: 'Q' } } ' – marcos82

Problemi correlati