0

我想为一个带有模块的项目加载我的所有模板,但我不确定我这样做的方式 (a) 是否会让代码使用 r.js 和 (b) 进行优化- 基本上,我担心 define() 块内的嵌套 require 不会被优化器拾取。理想情况下,我希望在运行 r.js 之后有一个缩小的单个文件,它是所有依赖项,如果可能的话,包括文本文件。

模板加载器.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()

});

目标是在一个地方处理模板资源加载,然后其他模块可以使用这些资源。

这似乎是一种好方法,如果不是,什么是更好的策略?

4

1 回答 1

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
    }
}); 

应用程序.js

require(['generic_templates'], function(genericTemplates) {

    console.log(genericTemplates.tpl1) // some html

});
于 2012-09-13T16:04:38.143 回答