我在示例演示应用程序中使用 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/