2013-10-28 126 views
0

我有一个场景,我需要从数据库(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并让编译器引入扩展和包含。

正如您在上面看到的,我尝试给出一个有效的'虚拟'文件,以便编译器可以找到其他所需的文件。我浏览过文档,没有找到解决这个问题的办法,有什么想法?

回答

1

我发现了一个解决方法,不完全是一个完整的解决方案。这基本上是创造(的模板)的模板,像

extends layout 

block append content 
include includes/header 
div.container 
    !{someContent} 
    include agile 
include includes/footer 

然后在发送HTML(在上面的问题)如下:尽管如此

res.render('someTemplate.jade', {someContent: html}); 

并不理想,因为不是所有的内容是动态的。如果有人找到更好的解决方案,请让我知道...