var express = require('express');
var ejs=require('ejs');
var app = express();
app.engine('ejs',ejs.renderFile);
app.get('/',(req,res)=>{
res.render('index.ejs',{
title:'Index',
content:'This is Express-app Top Page'
})
});
var server = app.listen(3000,()=>{
console.log('server start port: 3000');
});
我正在使用ejs.render()方法在Node.js(无框架)中渲染ejs。但是我发现ejs.renderFile()方法用作express框架中的视图引擎。我找不到两种方法之间的任何区别。
答案 0 :(得分:1)
从文档中可以看到:
let template = ejs.compile(str, options);
template(data);
// => Rendered HTML string
ejs.render(str, data, options);
// => Rendered HTML string
ejs.renderFile(filename, data, options, function(err, str){
// str => Rendered HTML string
});
这意味着:
ejs.renderFile
-处理文件并获取文件路径,例如参数
ejs.render
-使用字符串模板
答案 1 :(得分:1)
如果您将ejs与express一起使用,则无需费心render
或renderFile
。
您也可以这样做
// Set EJS View Engine
app.set('view engine','ejs');
您还可以参考快速模板指南here
通过这种方法,您仍在使用renderFile
方法。
关于这些方法之间的区别:
render()以字符串为模板,是一种同步方法。
ejs.render(str, data, options);
// => Rendered HTML string
renderFile()以文件路径作为输入,并且是异步的,并且需要回调函数。
ejs.renderFile(filename, data, options, function (err, str) {
// str => Rendered HTML string
});