2012-02-18 15 views
0

この時点でrequirejsに少し不満があります。require.jsを使用してモジュールを読み込む際にエラーが発生しました

私のApp.coffeeファイルにjqueryやその他のライブラリをロードしようとしています。問題は、自分の定義にモジュールの依存関係をロードできないことです。入力引数(jq、jsnなど)の一部は、nullまたはHTMLDocumentオブジェクトだけです。これは、私が試したプラグインの順列に基づいて変化します: 'order'、 'domReady'、またはnone。

私のjsのlibディレクトリはAのように見えます。そして私のApp.coffeeファイルはB)のように見えます。私はrequire.configの 'paths'を使用しようとしました。私はrequirejs-jqueryの統合について認識しています。しかし、私はorder my plugin loadingにすることはできませんか?

「パス」という名前を付けてみると、別のエラーが発生します。私は誰かsuggested jquery 1.7also here)を見る。これは稼働していますか?私はまず最初に一歩を踏み出し、私が正しく概念を持っていることを確認したかったのです。 i)require.config ii)依存関係を持つモジュール定義、iii)注文プラグインなど

これらの概念が正しくダウンしていれば、jqueryバージョンの問題だと思います。しかし、依存関係としてのjqueryだけではありません。そして、このような方法で時間を失うことは非常に面倒です。どんな助けもありがとうございます。前もって感謝します。

A)

 

    $ tree js/lib/ 
    js/lib/ 
    ├── backbone.js 
    ├── backbone_loader.js 
    ├── domReady.js 
    ├── jquery-1.6.3.js 
    ├── json2.js 
    ├── order.js 
    ├── pure.js 
    ├── require.js 
    └── underscore.js 

B)

 

    require.config({ 
     baseUrl: "/js", 
     paths: 
     order : '/js/lib/order' 
     jQuery : '/js/lib/jquery-1.6.3' 
     json2 : '/js/lib/json2' 
     Underscore : '/js/lib/underscore' 
     Backbone : '/js/lib/backbone_loader' 
     pure : '/js/lib/pure' 
    }) 


    define([ 'js/lib/order!js/lib/jquery-1.6.3', 
       'js/lib/order!js/lib/json2', 
       'js/lib/order!js/lib/underscore', 
       'js/lib/order!js/lib/backbone', 
       'js/lib/order!js/lib/pure', 
       'js/lib/order!js/bkeeping/models', ] 
     (jq, jsn, und, bbn, pur, models) -> 

     console.log('bkeeping LOADED') 

     # return an object with the models in it 
     models : models 
     jQuery : jq.noConflict() 
     json2 : jsn 
     Underscore : und.noConflict() 
     Backbone : bbn.noConflict() 
     pure : pure 
    ) 

答えて

0

この方向性をありがとう。

しかし、私はjquery-1.7に行きましたが、オブジェクトを取得するためにグローバル空間から引き離さなければなりませんでした。これは今の私の他のライブラリやその依存関係にも当てはまります。私がやったことは、依存関係のあるオブジェクトを返すことでした。 order pluginでライブラリの読み込みが完了しました。

コールバック関数(jq、pur、jsnなど)に渡される依存関係オブジェクトのコントラクトは、これらのライブラリでは機能していません。私の定義したモジュール(ex:models)では動作しますが、外部のlibでは動作しません。私はuse pluginを試しましたが、アンダースコアとバックボーンでは機能しなかったし、正しく設定しなかったことがわかりました。これは私の実行可能な解決策です。私は頭痛がrequire.jsの利益を真剣に曇らしていると言わざるを得ません。

 

    define([ 'order!js/lib/jquery-1.7', 
       'order!js/lib/pure', 
       'order!js/lib/json2', 
       'order!js/lib/underscore', 
       'order!js/lib/backbone', 
       'order!bkeeping/models', ] 
     (jq, pur, jsn, und, bbn, models) -> 

     console.log('bkeeping LOADED') 

     # return an object with the dependencies in it 
     models : models 
     jQuery : jQuery.noConflict() 
     pure : pur      # pure and json2 objects are simply used in other libs. I don't need them directly 
     json2 : jsn 
     Underscore : _.noConflict() 
     Backbone : Backbone.noConflict() 
    ) 

+0

答えにあるリンクを確認してください。そこにプラグインを設定することで、あなたの問題を解決できます。注文の必要はありません! – ggozad

+0

ああ、私はそれらのリンクをあなたの答えに見ました。しかし、おそらく私はちょうどそれを正しく設定していませんでした。 requirejsのために、私は今私の内部モジュール([こちらを参照してください(http://stackoverflow.com/questions/9383652/howto-use-jquery-serialscroll-scrollto-not-working)を参照してください))を使用します。私はそれが外部リソースのためにあまりにも面倒であると感じています。 – Nutritioustim

0

最新のjQueryのは、AMDローダーをサポートし、require.jsで細かい動作します。 アンダーとバックボーンにはない、あなたはどちらかにする必要があります:

  1. は、インスタンス必要の作者からoneため、修正版を使用しています。
  2. プラグインを使用します。私はその使用を発見した!私のニーズに完全に合うようにhereからプラグイン。
関連する問題