ejs 使用 Node.js 和 socket.io 渲染
ejs render with Node.js and socket.io
我开始使用 Node.js 并且我选择了我的模板引擎,它是 ejs。我的应用程序使用 socket.io 并根据特定请求尝试呈现 ejs 文件并发回客户端。当它是一个没有包含的单个 ejs 文件时,ejs 文件呈现得很漂亮,但是当我尝试包含另一个 ejs 文件时,它崩溃并显示以下消息:"Error: filename option is required for includes"。
请注意,
app.get('/', function(req, res){
res.render(__dirname+'/views/main/index',{});
});
工作得很好,即使 index.ejs 包含 <% include something %>。
我的其他代码部分,如果 index.ejs 包含(不包含它有效)则不起作用:
io.on('connection', function(socket){
fs.readFile('/views/main/index', 'utf8', function (err, template) {
var content = ejs.render(template,{
data:data
},function(err,result){
console.log(result);
});
});
这里有一个例子 ejs:
<% include list_header %>
<span>random content</span>
当你想使用 includes with ejs.render()
你也 need to pass the filename
option:
var content = ejs.render(template, {
data : data,
filename : '/views/main/index'
});
(filename
需要是您的主模板的完整路径;在您的代码中您使用的是 /views/main/index
所以我使用了它)
如果您经常需要呈现相同的模板,我建议您使用 ejs.compile()
。
我开始使用 Node.js 并且我选择了我的模板引擎,它是 ejs。我的应用程序使用 socket.io 并根据特定请求尝试呈现 ejs 文件并发回客户端。当它是一个没有包含的单个 ejs 文件时,ejs 文件呈现得很漂亮,但是当我尝试包含另一个 ejs 文件时,它崩溃并显示以下消息:"Error: filename option is required for includes"。 请注意,
app.get('/', function(req, res){
res.render(__dirname+'/views/main/index',{});
});
工作得很好,即使 index.ejs 包含 <% include something %>。 我的其他代码部分,如果 index.ejs 包含(不包含它有效)则不起作用:
io.on('connection', function(socket){
fs.readFile('/views/main/index', 'utf8', function (err, template) {
var content = ejs.render(template,{
data:data
},function(err,result){
console.log(result);
});
});
这里有一个例子 ejs:
<% include list_header %>
<span>random content</span>
当你想使用 includes with ejs.render()
你也 need to pass the filename
option:
var content = ejs.render(template, {
data : data,
filename : '/views/main/index'
});
(filename
需要是您的主模板的完整路径;在您的代码中您使用的是 /views/main/index
所以我使用了它)
如果您经常需要呈现相同的模板,我建议您使用 ejs.compile()
。