0

モジュールを使用してプロジェクトのすべてのテンプレートをロードしたいのですが、(a)コードがr.jsで最適化され、(b)意味があるかどうかはわかりません。 -基本的に、define()ブロック内のネストされたrequireがオプティマイザーによって取得されないのではないかと心配しています。理想的には、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()

});

目標は、テンプレートリソースの読み込みを処理する場所を1つ持つことです。これにより、他のモジュールで使用できるようになります。

これはそれを行うための良い方法のように思われますか?そうでない場合、より良い戦略は何ですか?

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

app.js

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

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

});
于 2012-09-13T16:04:38.143 に答える