3

他の人がバックボーン コンポーネントのライブラリの一部として使用できるように、クライアント側のテンプレートをバンドルする必要があります。RequireJS やその他の AMD ソリューションを使用できません。

私が考えたアイデアは、すべての HTML テンプレートを、テンプレートを含む変数を定義する単一の JS ファイルに結合することです。次に、誰かがしなければならないことは次のとおりです。

<script type="text/javascript" src="/js/templates.js"></script>

templates.js は次のようになります

var ns = ns || {};
ns.templates = {};
ns.templates['my-special-list'] = "<% _.each(stuff, function(model) { %><li><% print(model.get('title')); %></li><% }); %>";

次に、私のビューは次のようなことを行うことができます:

var V = Backbone.View.extend({
    initialize: function() {
        if (_.isUndefined(this.template)) {
            this.template = _.template(ns.templates['my-special-list']);
        } else {
            this.template = _.template(this.template);
        }
   }

   render: function() {
        this.$el.html(this.template.render(this.options));
   }
}

このアイデアはうまくいくようです。ビルド時にすべてのテンプレートを 1 つの HTML ファイルに結合できるようにしながら、ユーザーは独自のテンプレートを簡単に渡すことができます。

とはいえ、これらすべてが組み合わさった複雑さを感じます。まず、すべての新しい行を \n に変換したり、文字をエスケープしたりする必要があります。

正直なところ、それを行う別の方法は考えられません。グーグルで調べてみましたが、役立つものはあまりありませんでした。RequireJS はテキストを読み込むための優れた方法を提供するだけですが、これは私にとってはあまり役に立ちません。

私が望むものを達成するためのより良い方法はありますか、それとも私のアプローチはそれと同じくらい良いですか?

4

1 に答える 1