2017-11-18 111 views
1

我正在学习如何使用templatesjs来自: https://www.npmjs.com/package/templatesjs为什么模板包括文件不起作用

他们使用包括在其他的HTML文件的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的没有错误)

我在做什么错?

+0

首先,为什么要使用该节点包?看起来这不是一个有名的强大模块,请使用[Pug](https://pugjs.org/api/getting-started.html) – M98

回答

2

这是因为你没有发回任何数据到传入的请求!你的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/目录中,因为我们将默认包含目录设置为此路径;