捆绑重复的源文件

时间:2013-11-02 06:16:16

标签: node.js backbone.js requirejs bundle r.js

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

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']
        }
})  

现在当我查看我的捆绑文件时。有'模型/登录'代码显示我twise。因为它在两个视图中都使用(例如,IndexView和LoginView)。在我的情况下意味着我看到相同的代码(LoginModel)重复。因为我的捆绑大小增加不必要。我该如何避免这种情况?

感谢

1 个答案:

答案 0 :(得分:0)

将通用/共享代码作为requirejs中的单独模块是一种很好的做法。这样您就可以将它们从indexview和loginview中排除,并将其作为单独的模块加载,无论先加载哪个加载。是的,你现在必须再做一个额外的http请求。我通常有大量的常用代码,这种方法对我很有用。