Bla*_*ard 5 javascript ejs node.js express
我在我的Node.js和Express应用程序中使用EJS模板引擎,到目前为止已经使用了它的功能和渲染,到目前为止还没有任何问题.
但是,虽然我总是使用res.render(filename, options, callback)服务器端程序中的语法来呈现文件的内容,但我想知道res.render()和之间的区别是什么ejs.render().
看起来两种方法都将渲染文件名作为第一个参数,将Object作为第二个参数嵌入到文件中(如{title: "title here"}).res.render()可以将回调函数作为第三个(可选)参数使用,每当我想使用嵌套渲染时我都会使用它,但是从EJS Github存储库的文档中,它可能无法使用回调函数,再次,至少Github存储库中的文档不接受参数(尽管它的参数无论如何都是可选的).
所以我想知道,res.render()和之间的区别是什么ejs.render().如果只能res.render()采取第三个论点,那么使用的重点是ejs.render()什么?或者有什么ejs.render()可以使用res.render()不可以吗?一般来说,我应该在我的应用程序中使用哪个功能?
我app.set('view engine', 'ejs');在我的应用程序中编写了使用EJS以获取您的信息.
Tod*_*ell 17
使用res.render().
如果您已经使用Express来渲染视图,则不需要直接使用EJS.只需确保将其列为您的依赖项package.json,Express将负责其余工作!
这里有一些更多的细节:
调用ejs.render()或ejs.renderFile()绕过Express视图引擎.实际上,这意味着您必须提供EJS的绝对路径,并且必须将呈现的HTML发送到客户端.
这个:
app.get('/', function (req, res) {
res.render('index.ejs');
});
Run Code Online (Sandbox Code Playgroud)
相当于:
app.get('/', function (req, res) {
res.send(ejs.renderFile(__dirname + '/views/index.ejs'));
});
Run Code Online (Sandbox Code Playgroud)
回调参数res.render()用于支持需要异步返回的视图引擎.EJS用于fs.readFileSync渲染其模板ejs.render(),ejs.renderFile()不需要回调 - 它们只返回呈现的HTML.
我可以想到你可以直接使用EJS的一个场景是,如果你想将模板"编译"成一个稍后可以调用的函数:
var ejs = require('ejs'),
read = require('fs').readFileSync;
var template = ejs.compile(read('path/to/template.ejs', 'utf-8'));
console.log(template());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7875 次 |
| 最近记录: |