[英]Why templates include file doesn't work
我正在從以下網址學習如何使用templatejs: https : //www.npmjs.com/package/templatesjs
他們有一個在其他html文件中使用include html文件的示例(使用<%include%>
標記)
當我嘗試構建自己的示例時,它不起作用(屏幕為空,沒有錯誤):
var express = require('express');
var app = express();
var fs = require('fs');
var bodyParser = require('body-parser');
app.use(bodyParser.json())
var templatesjs = require('templatesjs');
// FILES
var MAIN_FILE = '/main.html';
/*
* Home page
*/
app.get('/', function (req, res) {
fs.readFile(__dirname + MAIN_FILE, function(err,data){
if(err) throw err;
templatesjs.set(data, function(err,data){
if(err) throw err;
res.send();
});
});
})
/*
* Startup
*/
var server = app.listen(8082, function () {
var host = server.address().address
var port = server.address().port
// start
console.log("App listening at http://%s:%s", host, port)
})
html.file的主要外觀如下:
<html>
<title> Tutorial -> Templates Js Server </title>
<head>
</head>
<body>
<div>
<%include Top.html%>
</div>
<div>
</div>
</body>
</html>
並且Top.html文件的外觀如下:
<p>TOP</p>
(我試圖將<html>
標記添加到Top.html中,但結果相同);
問題是我得到的網頁屏幕是空的(Node.js上沒有錯誤)
我究竟做錯了什么 ?
這是因為您沒有將任何數據發送回傳入請求! 您的res.send()
為空。 如果您確實想展示它,則應該將其發送回去。 例如: res.send('hello world')
。
如果要用數據呈現模板,則可以使用templatesjs.renderAll()
方法用所需數據填充html模板,如下所示:
// set default directory for html partials
templatesjs.dir = "./public/partials/";
app.get('/', function(req, res) {
fs.readFile(__dirname + MAIN_FILE, function(err, data) {
if (err) throw err;
templatesjs.set(data, function(err, data) {
if (err) throw err;
var list = { // this is your data
name: 'your name'
};
templatesjs.renderAll(list, function(err, data) {
if (err) throw err;
res.send(data);
});
});
});
})
的top.html:
<p>Hello, my name is <%name%></p>
該文件應位於./public/partials/
目錄中,因為我們將此路徑設置為默認包含目錄;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.