クライアント側とサーバー側の両方で使用したい「部分的な」テンプレートがあります。
include
テンプレートをすぐに実行する代わりに、クライアントでコンパイルされた関数を返し、それをJS変数に割り当ててスクリプト全体で使用できることを除いて、非常によく似たメソッドやフィルターなどはありますか?
現在、私はこれを行っています:
exports.list = function(req, res){
res.render('file/list', {
...
fileItemTemplate: jade.compile(fs.readFileSync(path.join(req.app.get('views'),'file','file-item.jade')), {client: true})
});
};
そして、私のテンプレートには次のものがあります。
ul#folder-list.thumbnails
each file in files
include file-item
...
script(type='text/javascript')
var fileItemTemplate = !{fileItemTemplate};
このようにして、ページの読み込み時にいくつかのアイテムをHTMLにレンダリングし、データが入ってくるときにパーシャルをレンダリングすることで、後でさらにいくつかのアイテムを追加できます。
これは機能しますが、ファイルを読み込んでルート内のファイルパスなどを処理し、基本的にまったく同じ変数をクライアント側で再宣言する必要があるため、あまり乾燥しているとは感じません。
これを行う良い方法はありますか?
このようなものが理想的です:
script(type='text/javascript')
var fileItemTemplate = !{compile file-item};