requireJS为什么每个定义都必须在不同的文件中?

时间:2014-03-06 11:20:57

标签: javascript jquery requirejs

我在示例演示应用中使用requireJS。这是我的代码:

require({
    paths: {
        ToDoModel: '/Scripts/ToDoModel.min',
        ToDo: '/Scripts/ToDo.min',
        ToDoService: '/Scripts/ToDoService.min'
    }
}, ['ToDo'], function (ToDo) {

    ko.applyBindings(new ToDo(), $('#toDo')[0]);
}
);

我知道在应用加载后我需要一些文件。因此,我想将ToDoModel,ToDo和ToDoService全部合并到一个文件中,然而define将它们分开,如下所示:

define('ToDoModel', [], function () {
    ToDoModel = function (data) {

        ko.mapping.fromJS(data, {}, this);


    }
    return ToDoModel;
});

所有时刻都在单独的文件中,您可以在paths属性中看到。

1 个答案:

答案 0 :(得分:2)

RequireJS不要求define次呼叫位于不同的文件中。只是在开发中“一个文件,一个模块(即一个define)”工作得很好。实际上,RequireJS优化器(r.js)在优化期间将多个define调用组合到一个文件中。没问题。

您在问题中显示的设置对我来说就像开发设置一样。通常,在开发中,我们将RequireJS加载模块作为单独的文件,而不是缩小。 (您的示例建议您加载中等代码。)对于部署,我们使用r.js将各种模块缩小并连接到RequireJS加载的一个文件中。

根据您在问题中显示的内容,如果您没有使用缩小文件,则可以使用如下配置:

{
    baseUrl: "/Scripts"
}

并且RequireJS将能够根据他们的名字找到您的单个模块,因为他们的名字中不会有.min