ejs.render()和ejs.renderFile()之间的区别

时间:2019-02-09 06:22:15

标签: javascript node.js express ejs

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框架中的视图引擎。我找不到两种方法之间的任何区别。

2 个答案:

答案 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
});

https://ejs.co/#docs

这意味着:

ejs.renderFile-处理文件并获取文件路径,例如参数

ejs.render-使用字符串模板

答案 1 :(得分:1)

如果您将ejs与express一起使用,则无需费心renderrenderFile

您也可以这样做

// 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
    });