动态解析Jade内容

时间:2013-10-28 23:15:32

标签: node.js mongodb express compilation pug

我有一个场景,我需要从数据库(MongoDB)解析JADE。

我创建了一个带有'方法'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);
    }
});

});

以上成功地从数据库中动态编译JADE并正确返回。我遇到的问题是如果DB中的JADE扩展或包含(在我的情况下我需要),它们不会被编译......

如果没有手动存储所有扩展并包含并自然地修复所有缩进,似乎没有办法“编译”JADE并让编译器引入扩展和包含。

正如您在上面所看到的,我尝试提供一个有效但“虚拟”的文件,以便编译器可以找到其他所需的文件。我查看了文档并没有找到解决方法,任何想法?

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,而不是一个完整的解决方案。这基本上是创建一个模板(模板),比如

extends layout

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

然后发送html(问题上方)如下:

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

仍然不理想,因为并非所有内容都是动态的。如果有人找到更好的解决方案,请告诉我......