2012-02-07 4 views
1

Spine.jsアプリでelychartsを使用しようとしています。 Elychartsのmonkey-patches jQueryが$( '...')。chart(...)を追加します。残念ながら、$は関数 "chart"を持っていないというエラーが出ています。Spinejs依存ロードの順

これは私の最初のSpine.jsアプリで、spine.appを使って生成しました。これは、NPMモジュールとしてjQueryを使用します。 ElychartsはCommonJSフレンドリーではないため、slug.jsonの "libs"セクションに含める必要があります。 Spineのドキュメント(Hem documentationのslug.jsonを参照)によると、 "libs"のファイルは "依存関係"の前にロードされます。ですから、elychartsがjQueryの前にロードして、その猿のパッチをしようとしていることが問題だと確信していますが、$はまだ定義されていないので、黙って失敗します。

NPMに既に含まれているライブラリに依存する "libs"を使用すると、これに類似した問題が発生したことがありますか? libs - > dependencies以外のspine.jsのロード順序を細かく制御する方法はありますか?だから、トリックは、アプリが初期化される前に、jQueryの依存ライブラリをロードすることです

<script type="text/javascript"> 
    var jQuery = require("jqueryify"); 
    var exports = this; 
    jQuery(function(jQuery){ 
// load jquery dependant libraries     
    $.getScript("//cdnjs.cloudflare.com/ajax/libs/waypoints/1.1.6/waypoints.min.js", function() { 
     var App = require("index"); 
     exports.app = new App({el: $("#wrapper")});  
    }); 
</script> 

:私にとって

+0

は裾の質問によく似ていますか?おそらくタグがあれば追加してください。 – SpoBo

答えて

0

「とても素敵ではない」ソリューションは、これでした。 誰かを助けることを願っています。

0

私はspine.jsアプリケーション(背骨スクリプトで生成)にTwitterブートストラップ(jQueryにも依存します)を含めるソリューションを探していました。私が見つけた最高のはこれです:単にjqueryifyjquery.jsに置き換えてください!

ドロップこれらの行:

./app/lib/setup.coffee:3:require('jqueryify') 
./package.json:9: "jqueryify": "~0.0.1", 
./public/index.html:9: var jQuery = require("jqueryify"); 
./slug.json:5: "jqueryify", 

が続いapp/libjquery.jsとあなたのJavaScriptライブラリを入れて、slug.json libs配列に追加します:

"libs": [ 
    "app/lib/jquery.js", 
    "app/lib/jquery-dependent-3rd-party-lib.js" 
] 

出来上がり!

P.S. (それはまた、CSSや画像に同梱されているため)、それに応じslug.jsonからそれを参照するTwitterのブートストラップ用として、私はpublicディレクトリにbootstrapディレクトリを全部入れていないお勧めします:

"libs": [ 
    "app/lib/jquery.js", 
    "public/bootstrap/js/bootstrap.min.js" 
] 

些細なことになるTwitterのブートストラップライブラリを更新する方法を - 必要性を全くその場所全体にファイルを分散させることができます。

関連する問題