在Express的版本3中,删除了一些功能:
the concept of a "layout" (template engine specific now)
partial() (template engine specific)
Changelog:https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
可以为EJS自己的名为include
的功能更改partial()
,但是布局的替代方案是什么?
发布于 2013-12-08 04:22:14
似乎从Express3开始,布局功能被委托给模板引擎负责。您可以使用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)。这两者做的是一样的事情,所以这只是你的选择。
发布于 2012-09-27 16:20:50
我也为此而苦苦挣扎。所以我放了一个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.
如果有人想添加更多示例,只需提交拉取请求即可。
发布于 2012-09-27 19:43:37
您可以使用"include“选项模拟Express2.x中的EJS布局。请看我的回答:
https://stackoverflow.com/questions/12616694
复制相似问题