javascript - requireJS 为什么每个定义必须位于不同的文件中?

标签 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('ToDoModel', [], function () {
    ToDoModel = function (data) {

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


    }
    return ToDoModel;
});

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

最佳答案

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

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

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

{
    baseUrl: "/Scripts"
}

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

关于javascript - requireJS 为什么每个定义必须位于不同的文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22222949/

相关文章:

javascript - JS : Filter array only for non-empty and type of string values

javascript - 如何在页面刷新时保持链接状态

javascript - ‘提交’onload进入循环

php - 如何访问 require.js 异步加载的 Javascript 中的 URL 参数?

javascript - 强制 RequireJS 文本!重新加载

RequireJS - jQuery 区分大小写吗?

javascript - 停止主 dblclick 事件触发,以便仅触发子 dbclick

javascript - 闭包 - JS Fiddle 和简单 HTML 文件上的不同行为

javascript - 选中和取消选中 slider 时

javascript - 将 jquery 添加到 React 入门工具包