4

私はrequireJSを使用してWebサイトを構築しています。

初めてrequireJSを使用しています。

main.jsのパスでrequireJSを構成しました:

require.config({
  paths: {
    'jquery': 'libs/jquery/1.7.2/jquery',
    'underscore': 'libs/underscore/1.3.3-amdjs/underscore', // AMD support
    'backbone': 'libs/backbone/0.9.2-amdjs/backbone', // AMD support
    'marionette': 'libs/marionette/0.9.3-amd/backbone.marionette', // AMD support
    'templates': '../templates'
}
});

そして、私が使用しているモデル、ビュー、コレクションで。

define([    
'jquery',
'backbone'
], function ($) {
    var Geo = Backbone.Model.extend({});

    return Geo;
});

私には明らかではないのは、なぜ jquery と backbone を依存関係として定義し続けなければならないのかということです。つまり、このプロジェクトとモデルは、jquery / バックボーンなしでは決して実行されません。

jquery と backbone を index.html にスクリプト タグとして追加し、可能なすべてのオブジェクトでそれらを参照するように保存してください。グローバル名前空間を汚染することは理解していますが、それは合理的ではありませんか?

任意のアドバイスが適用されます。

乾杯、

4

4 に答える 4

2

@Guy、それらを定義することはオプションですが、一貫性を保ちたい場合は、それを行うよりも優れています。これが Require.JS が提案するアーキテクチャです。dep として定義するたびに jQuery または Backbone をロードしようとするわけではありません。

また、あなたの例$では、コールバックfunction()引数で使用する必要はありません。jQuery と $ は既にウィンドウに表示されています。

define([    
'jquery',
'backbone'
], function ($) {
    var Geo = Backbone.Model.extend({});

    return Geo;
});

また、本番環境では、多くの依存関係を使用することがあるため、次のようにします。依存関係をリストしてから明示的に変数を割り当てるたびrequireに、一部の依存関係は AMD をサポートしておらず、期待どおりに返されないためです。

define([    
  'require'
  'moduleA',
  'moduleB'
], function (require) {
    var moduleA = require('moduleA'),
        moduleB = require('moduleB');

    /* code */
    return;
});
于 2012-07-15T05:31:27.480 に答える
0

モジュールAとBを作成し、それらを別のプロジェクトにドロップする場合、依存関係は明確に宣言されます。別のプロジェクトがjQueryなしでExtJSを使用している場合はどうなりますか?または、zeptoを使用していて、特にjqueryのライブラリが必要な場合はどうでしょうか。jqueryの構成を追加するだけで十分です。必要に応じてjqueryが読み込まれます。

共通ライブラリの存在に頼ることはできません。モジュールをrequirejsシェルでラップすると、ライブラリの依存関係が存在することが保証されます。そして、それは少し速いです:) http://jsperf.com/requirejs-include-faster(まあ、明らかに、すなわち、図を見る以外は)

また、実際にjqueryを使用しているのでない限り、それを要求する必要はありません。なぜバックボーンモデルで使用するのですか?ビュー内でも、this。$ elを使用して、jqueryオブジェクトをハントバックすることができます-this。$ el.find('。someclass')

于 2012-07-15T05:13:46.740 に答える
0

jQueryはどこにでもあり、index.htmlページのグローバル参照として使用されるため、あなたの理解は正しいと思います.htmlページは完全に私のプロジェクトにあります.

于 2012-07-15T03:24:56.957 に答える
0

r.js を使用してプロジェクトを最適化する場合、RequireJS にすべての js ファイルを追加すると非常に便利だと思います。

于 2012-07-15T04:06:22.510 に答える