我正在使用Knockout和https://github.com/rniemeyer/knockout-amd-helpers模块绑定。
<div data-bind="module: { name: baseModule, template: baseTemplate }"></div>
并在viewModel中:
_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(并且应该在优化文件中)。
任何想法:-)?
答案 0 :(得分:1)
问题是模板在运行时是必需的,并且不是define()中的依赖项。
在r.js的配置中,使用include选项始终在构建中包含该文件:
https://github.com/requirejs/r.js/blob/master/build/example.build.js#L27
第434行
include: ["foo/bar/bee"]
如果这不起作用,你可以创建一个引用所有模板的“templatesModule”,并使其成为app start js文件的依赖项。