2013-10-28 118 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}); 

並不理想,因爲不是所有的內容是動態的。如果有人找到更好的解決方案,請讓我知道...