Разница между ejs.render () и ejs.renderFile () - PullRequest
0 голосов
/ 09 февраля 2019
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 () для рендеринга ejs в Node.js (без фреймворка).Но я нашел метод ejs.renderFile (), используемый в качестве движка представления в экспресс-фреймворке.Я не могу найти никакой разницы между двумя методами.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Если вы используете ejs с express, вам не нужно беспокоиться о render или renderFile.

Вы также можете сделать,

// Set EJS View Engine
app.set('view engine','ejs');

, вы также можете обратитьсядля выражения шаблона шаблона здесь

При таком подходе вы все еще используете метод renderFile.

Что касается различий между этими методами:

  • render () принимает строку в качестве шаблона и является синхронным методом.

    ejs.render(str, data, options);
    // => Rendered HTML string
    
  • renderFile () принимает путь к файлу в качестве входных данных и является асинхронным и принимает вызов функцииназад.

    ejs.renderFile(filename, data, options, function (err, str) {  
        // str => Rendered HTML string
    });
0 голосов
/ 09 февраля 2019

Как видно из документа:

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 - работа со строковым шаблоном

...