簡體   English   中英

如何讓外部JSON用於Jade從Express渲染?

[英]How to let external JSON for Jade to render from Express?

我是Node / Express的初學者,我想使用Jade和Express服務我的靜態文件。

以前,我將Jade與gulp-jade和gulp-data結合使用,我將能夠呈現Jade文件並使用具有JSON文件的gulp-data呈現每個頁面。

index.jade + index.json將給我index.html的輸出

現在,我在如何使用Express將外部JSON文件包括到Jade中時遇到了麻煩。

例如:

server.js

app.get('/', function(req, res){
    res.render('pages/index', {pagetitle: 'Hello World'});
});

頁/ index.jade

h2 #{pagetitle}

這將導致

<h2>Hello World</h2>

問題

我想將{pagetitle: 'Hello World'}替換為外部json文件,即index.json。 我可以這樣做嗎?

app.get('/', function(req, res){
    res.render('pages/index', 'folder_name/index.json');
});

肯定是錯的,對吧?

是的,這是錯誤的。 這會將字符串本身設置為模型。 您可能需要看一下NodeJS的fs模塊。 這將使您可以讀取文件的內容。 然后,您可以解析JSON並將結果對象作為模型發送到您的Jade模板。

不要忘記異步讀取JSON,否則您將阻塞服務器。

https://nodejs.org/api/fs.html

下一步將是創建一個負責讀取此文件的模塊,將其保存在內存中,並僅在使用觀察程序進行更改時才重新加載它。

感謝您的幫助@gretro。

在您的幫助下,我能夠解決我的問題。

這是我的解決方案:

var renderFromJson = function(json_path, renderTemplate) {
    fs.readFile(json_path, function(err, data) {
        renderTemplate(JSON.parse(data));
    })
}

app.get('/', function(req, res){
    renderFromJson('datas/index.json', function(json_data) {
        res.render('pages/index', json_data);
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM