在我的快递应用中, 我已将视图引擎更改为ejs。
有谁知道是否仍然可以利用视图模板?
答案 0 :(得分:8)
实际上在Express 3.X不支持layout.ejs之后,如果你想使用布局,下面的步骤应由你自己完成:
package.json
档案"dependencies": { "express": "3.1.0", "ejs": "*", "express-partials": "*" }
npm install
以安装最新版本的express-partials
express-partials
中需要app.js
var partials = require('express-partials');
app.use(partials());
文件app.set('view engine', 'ejs');
下添加代码app.js
醇>
之后,您可以设计layout.ejs
并在<%- body%>
文件中添加layout.ejs
块,这就足够了并且运作良好。
答案 1 :(得分:6)
你可以使用这个模块......
https://github.com/aseemk/express-blocks
layout.ejs
<html>
<body>
<% include nav %>
<h1><%= title %></h1>
<%- body %>
</body>
</html>
login.ejs
<% layout('layout') -%>
<form>...</form>
nav.ejs
<nav>
<% if ( session.logged_in ) { %>
<a href="/account">account</a>
<a href="/logout">logout</a>
<% } else { %>
<a href="/signup">signup</a>
<a href="/login">login</a>
<% } %>
<a href="/">home</a>
</nav>
我正在使用express-partials,但我发现表达式块更适合ejs并表达3.x.使用partials是每次都必须传递数据的痛苦。使用<% include whatever %>
数据已经可以访问。
在路线文件中,您可以这样渲染:
exports.login.get = function(req, res){
res.locals.session = req.session;
res.render('login', { title: 'Login to your account' });
};
答案 2 :(得分:3)
如果我没记错的话,Express.js会将其留给模板引擎。因此,如果ejs不支持布局,那么你就不走运了。