【问题标题】:requireJS why does each define has to be in different file?requireJS 为什么每个定义都必须在不同的文件中?
【发布时间】:2014-03-06 11:20:56
【问题描述】:

我在我的示例演示应用程序中使用了 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;
});

正如您在路径属性中看到的那样,所有的时刻都在单独的文件中。

【问题讨论】:

    标签: javascript jquery requirejs


    【解决方案1】:

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

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

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

    {
        baseUrl: "/Scripts"
    }
    

    并且 RequireJS 将能够根据它们的名称找到您的各个模块,因为它们的名称中不会包含 .min

    【讨论】:

    • 但是如果我们必须将每个模块连接到一个文件中并下载整个文件而不考虑是否需要其他模块,那么 requireJS 的用途是什么?我认为 RequireJS 的全部目的是在需要时自动下载 JS / 文本模板文件?
    • 看看this questionthis one
    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 2015-11-14
    • 2021-01-11
    • 1970-01-01
    • 2013-01-06
    • 2011-09-28
    • 2015-05-13
    • 1970-01-01
    相关资源
    最近更新 更多