1

私は、require.js を使用し、models/、collections/ などで分割された backbone.js アプリを作成しました。次に、最初のアプリに依存する別のアプリを作成しました (および他のいくつかのもの。ファイルは次のようにレイアウトされています。

/scripts/appA/
             models/
             collections/
             views/
/scripts/appNeedsA/
             models/
             collections/
             views/

appA を要求するには、needsA に何を入れますか? 以下は私には論理的に思えますが、機能しません。../../appA を使用すると、appA が見つかりますが、ルートが間違っているため、IT の依存関係が見つかりません。

define(
  ['underscore', 'backbone', '../appA'],
  function (_, Backbone, appA) {
     ...
  }
4

2 に答える 2

2

あなたが望んでいた答えではないかもしれませんが、ここに1つのアプローチがあります:

https://github.com/busticated/RequireLoadingExample

アイデアは、消費するアプリケーションが使用するパスを使用してモジュール deps を定義し、消費されるアプリでパスを適切にエイリアスすることです。

私の例では、app1.js と app2.js の両方のモジュールを取り込む最上位の main.js ファイルがあります。これらのモジュールは両方とも、それぞれのサブディレクトリ内のモジュールに依存します。たとえば、app1.js は one/mods/a.js と one/mods/b.js を使用します。one/ ディレクトリ内の下位レベルに存在する別のメイン (main-one.js) ファイルがあります。このファイルは次を呼び出します。

require.config({
    paths: {
        'jquery': 'libs/jquery',
        'one': '.'
    }
});

したがって、app1.js がロードされると、one/mods/a.js パスが ./mods/a.js に変換され、問題なく検出/ロードされます。

上記のレポをフォークし、js コンソールを開いた状態でブラウザーに index.html と one.html をロードして、すべてが機能することを確認できるはずです。

それが役に立てば幸い!

于 2012-11-22T02:29:14.207 に答える
0

適切な解決策は次のとおりです。

define(
  ['underscore', 'backbone', 'appA/views/whatever'],
  function (_, Backbone, appAWhateverView) {
     ...
 }

そして、require.config パスを次のように設定します。

require.config({
    paths: {
         appA: '../appA'
    }
});
于 2012-12-28T21:09:37.390 に答える