如何:使用没有快递的ejs

时间:2014-04-07 00:32:53

标签: node.js ejs

我从一般的节点开始,我试图在没有快递的情况下建立一个网站。 我会用ejs来注入我的html,这就是我的问题所在...... 如何将ejs.render(...)附加到响应?

PS:我知道使用express可能是更好的选择,但我想知道它在桥接之前是如何工作的。

类似的东西:

var ejs = require("ejs");

function index (response, request, sequelize) {
    response.writeHead(200, {"Content-Type": "text/html"});
    test_data = "test data";
    response.end(ejs.render("./views/home.html",test_data));
}

exports.index = index;

但这有效^ _ ^

谢谢!

3 个答案:

答案 0 :(得分:10)

首先,您需要安装ejs - > $ npm install ejs --save

简单示例:

main.ejs:

<p> <%= exampleRenderEjs  %> </p>

server.ejs

var ejs = require('ejs');
var fs = require('fs');

var htmlContent = fs.readFileSync(__dirname + '/main.ejs', 'utf8');

var htmlRenderized = ejs.render(htmlContent, {filename: 'main.ejs', exampleRenderEjs: 'Hello World!'});

console.log(htmlRenderized);

答案 1 :(得分:2)

有一个名为Consolidate.js的项目,它为许多模板引擎提供了一个通用API。这确保了它们都可以互换。如果您想直接渲染模板,您希望与此API兼容。

Consolidate.js自述文件中的示例代码:

var cons = require('consolidate');
cons.swig('views/page.html', { user: 'tobi' }, function(err, html){
  if (err) throw err;
  console.log(html); // Or write to your `res` object here
});

此示例适用于Swig,但类似的代码适用于EJS或任何兼容的引擎。

答案 2 :(得分:-2)

某本书的示例: template.ejs

<html>
  <head>
    <style type="text/css">
      .entry_title { font-weight: bold; }
      .entry_date { font-style: italic; }
      .entry_body { margin-bottom: 1em; }
    </style>
  </head>
  <body>
    <% entries.map(entry => { %>
      <div class="entry_title"><%= entry.title %></div>
      <div class="entry_date"><%= entry.date %></div>
      <div class="entry_body"><%= entry.body %></div>
    <% }); %>
  </body>
</html>


function blogPage(entries) {
    const values = { entries };
    const template = fs.readFileSync('./template.ejs', 'utf8');
    return ejs.render(template, values);
}


const server = http.createServer((req, res) => {
    const entries = getEntries();
    const output = blogPage(entries);
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end(output);
    console.log('run server');
});
server.listen(8000);