簡體   English   中英

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

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

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