在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
可以为EJS自己的名为partial()
的功能更改include
,但布局的替代方法是什么?
答案 0 :(得分:18)
我也在努力解决这个问题。所以我提出了一个github项目,其中包含一个ejs和dustjs的例子。
https://github.com/chovy/express-template-demo
我不确定partial和include之间的区别,您不需要将数据显式传递给include。不确定为什么你会想要一个部分。
但是对于布局,您只需指定一个这样的块:
//layout.ejs
<html>
<%- body %>
</html>
//page1.ejs
<% layout('layout') -%>
This is loaded from page 1 and overrides <%- body %> in the layout.ejs.
如果有人想添加更多示例,只需提交拉取请求。
答案 1 :(得分:13)
似乎从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)。这两个人做同样的事情,所以这只是你的选择。
答案 2 :(得分:0)
您可以使用“include”选项模拟Express 2.x中的EJS布局。请在此处查看我的回答: