我想为带有模块的项目加载我的所有模板,但我不确定我这样做的方式(a)是否会让代码进行优化r.js和(b)是有道理的 - 基本上,我担心一个define()块内的嵌套需求不会被优化器拾取。理想情况下,在运行r.js之后,我希望有一个缩小的单个文件,它是所有依赖项,如果可能的话,包括文本文件。
template_loader.js
define(["jquery","underscore","icanhaz"],function($,_,ich){
var template_names = [
'test'
];
require([
'text!templates/test.tpl',
],function (){
for (var i = arguments.length - 1; i >= 0; i--) {
ich.addTemplate(template_names[i],arguments[i]);
};
});
});
然后在我的主app.js中:
require(['jquery','underscore','backbone','icanhaz','template_loader'],function($,_,Backbone,ich,loader){
// templates should be available here as ich.template_name()
});
目标是有一个处理模板资源加载的地方,然后可供其他模块使用。
这看起来是一种很好的方法,如果没有,那么什么是更好的策略?
答案 0 :(得分:2)
如果您想一次性加载所有模块,可以尝试以下方法:
<强> generic_templates.js 强>
define(function(require){
var tpl1 = require('text!generic_tpl1');
var tpl2 = require('text!generic_tpl2');
// etc
return {
tpl1: tpl1,
tpl2: tpl2
}
});
<强> app.js 强>
require(['generic_templates'], function(genericTemplates) {
console.log(genericTemplates.tpl1) // some html
});