我试图弄清楚使用require.js中的r.js来生成我的javascript文件中的build.js文件以仅在生产时加载一个文件是一个好主意。 但我想知道在我的情况下这是否是一个好主意,因为它似乎只是将大量内存加载到DOM中。也许我弄错了。
查看我使用require.js实现的一个基于骨干的视图。据我所知,r.js将获取此文件并进行优化并将其放入最终的build.js文件中,并以相同的方式定义所有其他视图,模型和集合。
define(function (require) {
"use strict";
var $ = require('jquery'),
_ = require('underscore'),
Backbone = require('backbone'),
tpl = require('text!tpl/start.html'),
Mustache = require('mustache'),
template = Mustache.compile(tpl);
return Backbone.View.extend({
initialize: function () {
},
render: function () {
this.$el.html(template());
return this;
},
events: {
'click #submit': "start"
},
start: function (event) {
// stuff to do ...
}
});
});
我猜最终的build.js会简单地将我的代码放在上面,然后将它们连接进去,对吧? 所以这意味着当我更新我的index.html loading require.js然后我的build.js文件时,它只会将所有视图,模型和集合加载到DOM中。不会占用太多内存,因为我不需要从头开始加载所有东西。 当它已经通过build.js文件加载时调用require('path / to / my / view')是否有意义?
答案 0 :(得分:2)
对于您的应用程序来说,将所有模块优化为单个文件可能没有意义。 r.js
支持这种情况。您需要做的是使用modules
选项并根据需要定义任意数量的输出文件。对此的一般说明可能是:
modules: [
{
name: 'main',
exclude: [ "viewA", "viewB" ],
},
{
name: 'viewA',
exclude: ['core']
},
{
name: 'viewB',
exclude: ['core']
}
]
上面的设置假定要优化的源具有名为main
,viewA
和viewB
的模块。它将创建3个优化捆绑包:core
,其中包含将在任何情况下 加载的所有核心模块,viewA
表示在情况下要加载的一组模块,因此等等,viewB
表示在其他情况下要加载的一组模块。
如何设置modules
参数取决于应用程序的具体情况。