1

実際、私は Requirejs と Backbone で厄介な問題に直面しています。私は 2 つの異なるパスでアプリを開発しています。

  1. 主なアクセス、例: /App/index.php#list
  2. サブアクセス、例: /App/index.php/clone#list

メソッドrequire([module])でモジュールをロードする必要があるときに問題が発生します。

絶対パスを使用すると、次のrequire(['/App/js/views/modal.js'])エラーが発生するだけです。

エラー: モジュールの読み込みタイムアウト: /App/js/views/modal.js

http://requirejs.org/docs/errors.html#timeout

require(['js/views/modal.js'])メインアクセスとrequire(['../js/views/modal.js'])サブアクセスのように、相対的な方法を使用すると、すべてが期待どおりに機能します。

絶対パスを使用して他のモジュールをロードしていますが、モジュールを複製して別の名前で要求すると機能します。唯一の違いは、必要なモジュールが別のモジュールで既に定義されていることです。したがって、次のようにすでにロードされています。

メインモジュール

require('/App/js/views/row.js'], function(Row){
     Somecode...
});

....

require('/App/js/views/modal.js'], function(Modal){
     Othercode...
});

行モジュール

define([
'backbone',
'text!templates/row.html',
'views/modal', //the same view callend in my main file!
], function(Backbone, rowTemplate, Modal){
    Viewcode...
});

モーダルモジュール

define([
'backbone',
'text!templates/modal.html',
'models/user_model',
], function(Backbone, modalTemplate, Model){
    Viewcode...
});

何かが足りないのかもしれませんが、この背後にあるロジックがわかりません。絶対アドレスで動作しないのはなぜですか?

4

1 に答える 1

1

.jsrequire.js でファイル名の末尾に追加する必要はありません。また、アプリケーションのさまざまなモジュール内で相対パスを使用することをお勧めします。これにより、アプリのモジュール/コンポーネントを別のアプリケーションにドラッグ アンド ドロップすることがより簡単になります。

于 2012-09-17T23:00:36.933 に答える