gpt4 book ai didi

node.js - 在 View 中获取编译的 Jade 模板?

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:18 26 4
gpt4 key购买 nike

我有一个“部分”模板,我想在客户端和服务器端使用它。

是否有一些方法或过滤器或与 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};

最佳答案

可能的解决方案是JadeAsset 。另请参阅讨论 here .

您可以将资源挂接到 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 Assets :

var assets = new AssetRack([
new rack.JadeAsset({
url: '/templates.js',
dirname: __dirname + '/templates'
})
]);

关于node.js - 在 View 中获取编译的 Jade 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14097752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com