0

require.jsとAMDを使用してMarionetteアプリケーションを作成しています。コード例として、JsoversonバージョンのAddyOsmanyのToDoMVCを取り上げています。このバージョンに関するドキュメントがあまりない場合でも、ニーズに合わせて調整しています。

ページをロードするたびに、ブラウザコンソールで次の404エラーが発生します。

GET http://127.0.0.1:8000/static/js/backbone.wreqr.js 404 (NOT FOUND) require.js:1836
Uncaught Error: Script error
http://requirejs.org/docs/errors.html#scripterror require.js:160
GET http://127.0.0.1:8000/static/js/backbone.eventbinder.js 404 (NOT FOUND) require.js:1836
GET http://127.0.0.1:8000/static/js/backbone.babysitter.js 404 (NOT FOUND) require.js:1836  
Uncaught Error: Script error
http://requirejs.org/docs/errors.html#scripterror 

さて、backbone.wreqrは、Marionetteの作者によって書かれた「BackboneとBackbone.Marionetteアプリケーションモジュールとコンポーネントをデカップリングするためのインフラストラクチャ」であることがわかりました。また、 backbone.eventbinderbackbone.babysitterは、作者によって作成されたプロジェクトです。

1)次のコード例ではこれらのファイルを使用しなかったため、これらのファイルを含める必要がある理由がわかりません。問題なく機能します。
2)これらのファイルはとにかく間違ったパスで必要です。私のアプリケーションは次のように構成されています。

Staticfiles/ 
|__js/
|    app.js
|    main.js
|    models/
|    ectr.
|__lib/
     backbone/
        Backbone.js
        Marionette.js (AMD version)
        Underscore.js
        ectr.

では、なぜjs/フォルダの下でそれらのファイルを探しているのでしょうか。
3)それはRequire.jsの問題ですか、それとも私のjsアプリケーションの単なるエラーですか?

4

3 に答える 3

2

これらのファイルは、Marionetteが正しく機能するために必要ですが、作成者はそれらをMarionetteから切り離して、他のプロジェクトでも使用できるようにします。

必要なすべての依存関係ファイルが含まれているMarionetteのバンドルバージョンをダウンロードすることをお勧めします。

http://marionettejs.com/#download

于 2013-01-17T08:17:49.780 に答える
2

依存バージョンのMarionetteを使い続けたい場合(たとえば、私のようなJamJSを使用している場合)、それらをRequireのmain.js構成に含めることができます。たとえば、ここに私のものがあります:

require.config({
    paths: {
            marionette: 'lib/Backbone.Marionette/lib/core/amd/backbone.marionette',
            'backbone.babysitter': 'lib/Backbone.BabySitter/lib/amd/backbone.babysitter',
            'backbone.wreqr': 'lib/Backbone.Wreqr/lib/amd/backbone.wreqr'
    }
});

これは、アプリのメインのrequire()呼び出しの前に行われます。

于 2013-02-12T23:04:19.583 に答える
1

RequireJSは、すべてのスクリプトがファイルと同じベースディレクトリにあることを前提としていmain.jsます。

別のベースディレクトリを指定する場合は、baseUrl構成オプションを使用します。

<!-- In main.js -->
require.config({
    baseUrl: "/another/path"
});
于 2013-01-17T04:01:43.977 に答える