淘汰赛 AMD 模块和 R.js
Knockout AMD Module and R.js
我正在使用带有 https://github.com/rniemeyer/knockout-amd-helpers 模块绑定的 Knockout。
<div data-bind="module: { name: baseModule, template: baseTemplate }"></div>
并且在视图模型中:
_this.baseModule = ko.observable('AppViewModel');
_this.baseTemplate = ko.observable('base');
在使用 r.js 优化器之前一切正常。
我有这些设置,在开发环境中,每次需要模板时都会对正确的资产(包含模板的 .txt 文件)执行 GET。
ko.amdTemplateEngine.defaultPath = "views-gulp";
ko.amdTemplateEngine.defaultSuffix = ".txt";
然而,现在我在生产环境中使用了 r.js,我认为当在一个文件中优化所有内容时,.txt 模板会被考虑在内。
问题:Knockout 模块绑定仍在对不再存在的资产执行 GET(应该在优化文件中)。
有什么想法吗:-)?
问题是模板在 运行 时是必需的,而不是 define() 中的依赖项。
在 r.js 的配置中,使用 include 选项始终将文件包含在构建中:
https://github.com/requirejs/r.js/blob/master/build/example.build.js#L27
第 434 行
include: ["foo/bar/bee"]
如果这不起作用,您可以制作一个 "templatesModule" 来引用所有模板,并使其成为应用程序启动 js 文件的依赖项。
我正在使用带有 https://github.com/rniemeyer/knockout-amd-helpers 模块绑定的 Knockout。
<div data-bind="module: { name: baseModule, template: baseTemplate }"></div>
并且在视图模型中:
_this.baseModule = ko.observable('AppViewModel');
_this.baseTemplate = ko.observable('base');
在使用 r.js 优化器之前一切正常。 我有这些设置,在开发环境中,每次需要模板时都会对正确的资产(包含模板的 .txt 文件)执行 GET。
ko.amdTemplateEngine.defaultPath = "views-gulp";
ko.amdTemplateEngine.defaultSuffix = ".txt";
然而,现在我在生产环境中使用了 r.js,我认为当在一个文件中优化所有内容时,.txt 模板会被考虑在内。
问题:Knockout 模块绑定仍在对不再存在的资产执行 GET(应该在优化文件中)。
有什么想法吗:-)?
问题是模板在 运行 时是必需的,而不是 define() 中的依赖项。
在 r.js 的配置中,使用 include 选项始终将文件包含在构建中:
https://github.com/requirejs/r.js/blob/master/build/example.build.js#L27
第 434 行
include: ["foo/bar/bee"]
如果这不起作用,您可以制作一个 "templatesModule" 来引用所有模板,并使其成为应用程序启动 js 文件的依赖项。