Intereting Posts

为什么模板包含文件不起作用

我正在学习如何使用来自https://www.npmjs.com/package/templatesjs的 templatesjs

他们有一个在其他html文件中使用include html文件的例子(使用<%include%>标签)

当我试图build立我自己的例子,它不起作用(屏幕是空的,没有错误):

 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没有错误)

我究竟做错了什么 ?

Solutions Collecting From Web of "为什么模板包含文件不起作用"

这是因为你不发回任何数据到传入的请求! 你的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/目录中,因为我们把默认的include目录设置为这个path;