动态解析Jade内容
问题描述:
我有一个场景,我需要从数据库(MongoDB)解析JADE。动态解析Jade内容
我创建了一个带有'method'findByTitle的数据访问类来返回所需的JADE数据,它工作。
app.get('/something', function (req, res) {
blogProvider.findByTitle('Structure', function(error, blog){
if (error) {
console.log('Trying to find blog by title, an error has occured ' + error);
} else {
var jade = require('jade');
var fn = jade.compile(blog.body, {filename:'structure.jade'});
var html = fn();
res.send(html);
}
});
});
上面的代码从DB成功编译JADE并正确返回。我遇到的问题是,如果数据库中的JADE已扩展或包括(我需要在我的情况下),他们不编译...
缺乏手动存储所有扩展和包括和自然修复所有缩进,似乎没有办法'编译'JADE并让编译器引入扩展和包含。
正如您在上面看到的,我尝试给出一个有效的'虚拟'文件,以便编译器可以找到其他所需的文件。我浏览过文档,没有找到解决这个问题的办法,有什么想法?
答
我发现了一个解决方法,不完全是一个完整的解决方案。这基本上是创造(的模板)的模板,像
extends layout
block append content
include includes/header
div.container
!{someContent}
include agile
include includes/footer
然后在发送HTML(在上面的问题)如下:尽管如此
res.render('someTemplate.jade', {someContent: html});
并不理想,因为不是所有的内容是动态的。如果有人找到更好的解决方案,请让我知道...