1

私はrequireJSについてもっと学ぼうとしています。したがって、私がそれを正しく理解していれば、次のコードは合法であるはずです。これは私のアプリケーションをモジュール化する正しい方法ですか?

これはapplication.jsdata-main属性が指す場所です。

requirejs.config({
    baseUrl: 'scripts/vendor', // By default, load all from vendor folder
    shim: {
        'backbone' : { // Do not support module loading
            deps: ['underscore', 'jquery'], // Do not support module loading
            exports: 'Backbone' 
        },
    },
    paths: {
        models: '../application/models', // Load from this folder if starts with user
        views: '../application/views',   // As above...
    }
});

requirejs(['jquery', 'backbone', 'views/user'], function($, Backbone, UserView) {
});

そして、ビュー/モデルの私のモジュール(今はかなり役に立たない):

ファイルapplication/views/user.js

// underscore should be loaded now
define(['jquery', 'backbone', 'models/user'], function($, Backbone, User) { 
    return Backbone.View.extend({
        model: User,

        el: $('tr'),    

        initialize: function() {}
    });
});

ファイルapplication/models/user.js

define(['backbone'], function(Backbone) { // underscore should be loaded now
    return Backbone.Model.extend({
    });
});
4

2 に答える 2

5

AMDと互換性がないため、アンダースコアもシムする必要があります。

 underscore: {
  exports: '_'
}

https://github.com/tbranyen/backbone-boilerplate/を調べることをお勧めします。これは、RequireJSを使用することで多くの頭痛の種を取り除くためです。

于 2012-08-12T16:10:04.130 に答える
1

アンダースコアの代わりにlodashを使用してください。これは、完全に互換性のある優れたソリューションであり、AMDの負荷をサポートします。ベンチマークとドキュメントを確認してください;)

requirejs.config({
    appDir: ".",
    baseUrl: "js",
    paths: { 
        'jquery': ['//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min','libs/jquery-min'],
        'lodash': 'libs/lodash.min',
        'backbone': 'libs/backbone.min',
    },
    shim: {
        'backbone': {deps:['lodash','jquery'], exports: 'Backbone'}
    }
});

require([
    'jquery', 'lodash','backbone'
],
function($, _){
    return {};
});
于 2012-11-22T21:22:13.040 に答える