0

这是我的索引页面(索引视图)。

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;
      }
    });
})

现在我正在使用以下配置创建一个包:

({
    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 中排除,并将其作为单独的模块加载,以先加载者为准。是的,您现在必须再提出一个额外的 http 请求。我通常有大量的通用代码,这种方法对我很有效。

于 2013-11-04T08:19:32.860 回答