实际上在Express 3.X不支持layout.ejs之后,如果你想使用布局,下面的步骤应该由你自己完成:
package.json文件中添加依赖"express-partials":"*"
"dependencies": {
"express": "3.1.0",
"ejs": "*",
"express-partials": "*"
}
npm install安装最新版本express-partialsexpress-partials在你的app.jsvar partials = require('express-partials');app.use(partials());在app.set('view engine', 'ejs');in app.js文件中添加代码之后,您可以设计自己layout.ejs并<%- body%>在layout.ejs文件中添加块,这就足够了并且运行良好.
你可以用这个模块来做...
https://github.com/aseemk/express-blocks
layout.ejs
<html>
<body>
<% include nav %>
<h1><%= title %></h1>
<%- body %>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
login.ejs
<% layout('layout') -%>
<form>...</form>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我使用的是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' });
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12000 次 |
| 最近记录: |