2017-11-18 6 views
1

動作しないなどがなぜからtemplatesjsの使い方を学んでいる:テンプレートファイルが

とき彼らは(<%include%>タグを使用して)他のHTMLファイルにHTMLファイルを含める使用例を持っている https://www.npmjs.com/package/templatesjs

私は(画面がエラーなしで、空である)、それは動作しません、私自身の例を構築しようとしている:

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> 

(私はのtop.htmlに<html>タグを追加しようとしましたが、同じ結果しています)。

問題は、私は取得していたWeb画面は私が間違っているのは何

(Node.jsのでエラーなしで)空であるということですか?

+0

まず、なぜそのノードパッケージを使用していますか?有名で強力なモジュールではないようですが、[Pug](https://pugjs.org/api/getting-started.html) – M98

答えて

2

受信したリクエストにデータを返さないためです。 res.send()は空です。もしあなたが本当にそれを見せたいのであれば、何かを送り返すべきです。たとえば、res.send('hello world')です。

、あなたのデータを使用して、テンプレートをレンダリングしたい場合は、次のように、あなたが目的のデータを使用してHTMLテンプレートを移入するtemplatesjs.renderAll()メソッドを使用することができます。

// 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/ディレクトリに存在する必要があります。

関連する問題