我有一个“部分”模板,我想在客户端和服务器端使用它。
是否存在某些方法或过滤器或与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};
答案 0 :(得分:1)
您可以将资产挂钩到Express:
assets.on('complete', function() {
var app = express.createServer();
app.configure(function() {
app.use(assets); // that's all you need to do
});
app.listen(8000);
});
创建您的Jade资产:
var assets = new AssetRack([
new rack.JadeAsset({
url: '/templates.js',
dirname: __dirname + '/templates'
})
]);