在 Express 的第 3 版中,删除了一些功能:
the concept of a "layout" (template engine specific now)
partial() (template engine specific)
更新日志:https ://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
partial()可以为 EJS 自己的功能更改,include但布局的替代方法是什么?
在 Express 的第 3 版中,删除了一些功能:
the concept of a "layout" (template engine specific now)
partial() (template engine specific)
更新日志:https ://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
partial()可以为 EJS 自己的功能更改,include但布局的替代方法是什么?
我也为此苦苦挣扎。所以我建立了一个 github 项目,其中包含 ejs 和dustjs 的示例。
https://github.com/chovy/express-template-demo
我不确定部分和包含之间的区别,您不需要显式将数据传递给包含。不知道为什么你会想要一个部分。
但是对于布局,您只需指定一个这样的块:
//layout.ejs
<html>
<%- body %>
</html>
//page1.ejs
<% layout('layout') -%>
This is loaded from page 1 and overrides <%- body %> in the layout.ejs.
如果有人想添加更多示例,只需提交拉取请求。
似乎从 Express 3 开始,布局功能被委托给模板引擎负责。您可以使用 ejs-locals ( https://github.com/RandomEtc/ejs-locals ) 进行布局。
安装 ejs-locals
npm install ejs-locals --save
在 app.js 中使用 ejs-locals 作为你的应用引擎
var express = require('express');
var engine = require('ejs-locals');
...
app.engine('ejs', engine);
app.set('view engine', 'ejs');
现在您可以使用布局
layout.ejs
<body>
<%- body %>
</body>
index.ejs
<% layout('layout') -%>
<div class="container">
<div class="jumbotron">
...
另一种选择是使用 express-partials ( https://github.com/publicclass/express-partials )。两者做同样的事情,所以这只是你的选择。
您可以使用“包含”选项来模仿 Express 2.x 中的 EJS 布局。在这里查看我的答案: