[英]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.