Mustache.js の Functions と初期化処理
実運用時は、data をヘルパー関数群を登録したオブジェクトから生成する ( Object.create(SomeObject) ) 感じかな。 と書きました。
なので実際に試して見ました。
上のコードの JS の部分を以下の内容に書き変えてください。
(function() { // 表示用変数のベースオブジェクト var base = Object.create(null); Object.defineProperties(base, { bold: { value: function() { // 入力値と、描画用関数が渡ってくる return function(text, render) { return ['<b>', render(text), '</b>'].join(''); }; } } }); // テンプレートを読み込む var template = $('#sampleTpl').html(); // 表示用変数を初期化する、base を元とする var data = Object.create(base); Object.defineProperty(data, 'msg', { value: 'hoge fuga piyo.' }); // 書き出し var html = Mustache.to_html(template, data); $('#sandbox').html(html); })();
上記では一つのファイルで、 base data としましたが、実際は別ファイルなどで base オブジェクトを作ってあげて、それを使い回せばいいんじゃないかと思います。