0

これは私のインデックス ページ (Index View) です。

define([
    'model/login'
    'view/login'
], function (LoginModel, loginview) {
    return Backbone.View.extend({
    initialize: function () {
         this.model = LoginModel;
      }
    someMethod: function() {
        new loginview();    
      }
    });
})

これは私の別のログイン ページ (ログイン ビュー) です。

define([
    'model/login'
], function (LoginModel) {
    return Backbone.View.extend({
    initialize: function () {
         this.model = LoginModel;
      }
    });
})

現在、次の構成を使用して 1 つのバンドルを作成しています。

({
    appDir: "./",
    baseUrl: "./",
    mainConfigFile: './main.js',
    dir: './jsbuilt',
    //urlArgs: "v" + (new Date()).getTime(),
    //urlArgs: "v2", // "cache=v2",
    //fileExclusionRegExp: /^(r|indexpage)\.js$/,
    preserveLicenseComments: false,
//    wrap: {
//        start: "(function() {",
//        end: "}());"
//    },
    wrap: true,
    optimize: "uglify2",
    modules: [
        {
            name: "main"
        },
        {
            name: "basejs/indexpage",
            exclude: ['main']
        }
})  

今、バンドルファイルをチャッキングすると。「モデル/ログイン」コードが表示されます。両方のビュー (例: IndexView と LoginView) で使用されるためです。私の場合、同じコード (LoginModel) が重複していることを意味します。私のバンドルサイズの増加は不要です。どうすればこれを回避できますか?

ありがとう

4

1 に答える 1

0

共通/共有コードを requirejs の個別のモジュールとして使用することをお勧めします。そのため、indexview と loginview の両方からそれらを除外し、最初に読み込まれる方を使用して個別のモジュールとして読み込むことができます。はい、もう 1 つ追加の http リクエストを作成する必要があります。私は通常、共通コードの大きな塊を持っており、このアプローチはうまく機能します。

于 2013-11-04T08:19:32.860 に答える