淘汰AMD模块和R.js

时间:2016-05-07 16:53:51

标签: knockout.js requirejs amd

我正在使用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(并且应该在优化文件中)。

任何想法:-)?

1 个答案:

答案 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文件的依赖项。