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一起使用,则无需担心renderrenderFile

您也可以这样做:

    // 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>

07-27 15:19