Node.js 如何:在没有express的情况下使用ejs
一般来说,我从node开始,尝试在没有express的情况下创建一个站点。 我仍然希望使用ejs注入我的html,这就是我的问题所在。。。 如何将ejs.render(…)附加到响应Node.js 如何:在没有express的情况下使用ejs,node.js,ejs,Node.js,Ejs,一般来说,我从node开始,尝试在没有express的情况下创建一个站点。 我仍然希望使用ejs注入我的html,这就是我的问题所在。。。 如何将ejs.render(…)附加到响应 PS:我知道使用express可能是一个更好的选择,但在桥接之前,我想知道它在底层是如何工作的 比如: var ejs = require("ejs"); function index (response, request, sequelize) { response.writeHead(200, {"C
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;
但这是可行的^_^
谢谢 有一个名为的项目,它为许多模板引擎提供了通用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或任何兼容引擎。首先,您需要安装EJS->$npm安装EJS--save 简单的例子: main.ejs:
<p> <%= exampleRenderEjs %> </p>
一些书中的例子:
模板.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);
.entry_title{font-weight:bold;}
.entry_date{字体样式:斜体;}
.entry_body{页边距底部:1em;}
{ %>
功能博客页面(条目){
常量值={entries};
consttemplate=fs.readFileSync('./template.ejs',utf8');
返回ejs.render(模板、值);
}
const server=http.createServer((req,res)=>{
const entries=getEntries();
常量输出=博客页面(条目);
res.writeHead(200,{'Content-Type':'text/html'});
res.end(输出);
log('runserver');
});
服务器监听(8000);
“在桥接之前,我想知道它在下面是如何工作的。”阅读express源代码,这有多难?不是express…常规节点你想了解express是如何实现的。在我看来,阅读express源代码中express如何调用ejs似乎是合乎逻辑的。无论如何,似乎logical ejs也不会关心模板位于另一个文件中的事实,而是将模板字符串作为render inst的参数ead@npm,在我跳入express之前,我想知道node是如何工作的。有没有一种方法可以在没有界面的情况下完成它?尽管这不是我想要的答案,因为我想针对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);