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框架中用作视图引擎。我找不到这两种方法之间的任何区别。 最佳答案
如果您将EJS与Express一起使用,则无需担心render
或renderFile
。
您也可以这样做:
// Set EJS View Engine
app.set('view engine', 'ejs');
您也可以参考Express template guide
通过这种方法,您仍在使用
renderFile
方法。至于这两种方法之间的区别:
render()
将字符串作为模板,是一种同步方法。 <pre><code>ejs.render(str, data, options);
// => Rendered HTML string
</code></pre>
renderFile()
将文件路径作为输入,是异步的并接受函数回调。 <pre><code>ejs.renderFile(filename, data, options, function (err, str) {
// str => Rendered HTML string
});</code></pre>