2013-08-20 11 views
6

ブラウザにQライブラリ(http://documentup.com/kriskowal/q/)を使用する必要があります。 RequireJSを使用してこのライブラリをロードしたいと思いますが、これを行う方法はわかりません。私は自分のモジュールをロードする方法を知っていますが、私はQでそれを行うことはできません。ブラウザでQライブラリを使用する

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

どのように私はQをロードし、その後、別のモジュールでそれを使用することができます。これは、いくつかの機能を持っていますか?

答えて

3

あなたは単にあなたがそうのようなQ変数経由でアクセスすることができ、あなたのHTMLに

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

をスクリプトステートメントを使用してQのライブラリをロードすることができます:http://jsfiddle.net/Uesyd/1/

で、このランニングを参照してください

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); 
}); 

+6

これはうまくいきませんが、長期的に問題を引き起こす可能性のあるモジュール型(つまりAMD/RequireJS)と「従来型」(つまりグローバル変数)コードを混在させるという意味ではないと思います。 – kryger

+0

https://rawgithub.com/kriskowal/q/master/q.js - 見つからない –

14

これを実行するための適切なAMDの方法は、@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); 
    }); 
}); 

このようにQはグローバルスコープに漏れず、このライブラリに応じてすべてのモジュールを見つけるのは簡単です。

+1

AMDモジュールではないためシム構造のエントリーも必要です: 'shim:{ 'Q' :{ 輸出: 'Q' } } – marcos82