0

バックボーンは indexview モジュールで呼び出されません。

requirejs 2.1.5/2.1.4 および backbonejs 0.9.10 を使用

r.js実行後のmain.js

...
// this is causing the backbone to return 
// null/undefined in the next define call below
define("backbone", function(){}); 

define('views/index/IndexView', [
    'underscore',
    'backbone',
    'text!templates/index/indexTemplate.html'  
], function(_, Backbone, indexTemplate){

    console.log(Backbone); // returns undefined
    var IndexView = Backbone.View.extend({
...

しかし、バックボーンをモジュールとして登録する最初の定義呼び出しを実行すると、すべて正常に動作します。ただし、backbone-min.js は個別にロードされます。しかし今のところ、スクリプトを実行する唯一の方法です。ここで間違いなく何かが欠けています。

main.js

require.config({
    paths: {
        underscore  : 'libs/underscore/underscore-min',
        backbone    : 'libs/backbone/backbone-min'
        templates   : '../templates'
    },
    shim: {        
        'backbone': {
            deps: ['jquery','underscore'],
            exports: 'Backbone'
        }
    }
});

require(['app'], function(App){
    App.initialize();
});

build.js

({
    appDir: "../",
    baseUrl: "js",
    dir: "../../build",
    optimize: "none",
    paths: {
        "jquery": "libs/requirejs/require-jquery",
        "underscore" : 'libs/underscore/underscore-min',
        "backbone": 'libs/backbone/backbone-min',
        "templates": '../templates',
    },
    modules: [
        {
            name: "main",
            exclude: ["jquery"]
        }
    ]    
})

私はまだバックボーンとrequirejsに足を踏み入れています。フィードバックは大歓迎です。

4

2 に答える 2

0

この問題が発生したばかりです。main.js から build.js ファイルに「shim」を追加する必要があり、魅力的に機能します ;)

于 2013-08-22T08:51:46.383 に答える
0

まず第一に、define('backbone',...) は必要ありません。とにかくその部分は何ですか?Backbone をモジュールとして定義する必要はありません。Requirejs は、バックボーンをフレームワーク全体で使用できるようにする仕事をしています。コードからわかるように、Backbone.View.extend() を呼び出すと、Backbone は既に存在します。検査したい場合は、console.log を使用しないでください。代わりに console.dir を使用してください。クロムインスペクターでは、出力が適切にフォーマットされます。

次に、shim のバックボーン deps 配列にアンダースコアを追加します。

于 2013-03-08T00:02:08.827 に答える