首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Express3和EJS中的布局

Express3和EJS中的布局
EN

Stack Overflow用户
提问于 2012-09-27 16:02:45
回答 3查看 30.1K关注 0票数 16

在Express的版本3中,删除了一些功能:

代码语言:javascript
复制
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(),但是布局的替代方案是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-08 04:22:14

似乎从Express3开始,布局功能被委托给模板引擎负责。您可以使用ejs-locals (https://github.com/RandomEtc/ejs-locals)进行布局。

安装ejs-locals

代码语言:javascript
复制
npm install ejs-locals --save

在app.js中使用ejs-locals作为应用程序引擎

代码语言:javascript
复制
var express = require('express');
var engine = require('ejs-locals');
...

app.engine('ejs', engine);
app.set('view engine', 'ejs');

现在你可以使用布局了

代码语言:javascript
复制
layout.ejs
<body>
  <%- body %>
</body>

index.ejs
<% layout('layout') -%>

<div class="container">
<div class="jumbotron">
...

另一种选择是使用express-partials (https://github.com/publicclass/express-partials)。这两者做的是一样的事情,所以这只是你的选择。

票数 15
EN

Stack Overflow用户

发布于 2012-09-27 16:20:50

我也为此而苦苦挣扎。所以我放了一个github项目,里面有一个ejs和dustjs的例子。

https://github.com/chovy/express-template-demo

我不确定partial和include之间的区别,您不需要显式地将数据传递给include。不知道你为什么想要部分的。

但是对于布局,您只需指定如下所示的块:

代码语言:javascript
复制
//layout.ejs
<html>
<%- body %>
</html>

//page1.ejs
<% layout('layout') -%>
This is loaded from page 1 and overrides <%- body %> in the layout.ejs.

如果有人想添加更多示例,只需提交拉取请求即可。

票数 17
EN

Stack Overflow用户

发布于 2012-09-27 19:43:37

您可以使用"include“选项模拟Express2.x中的EJS布局。请看我的回答:

https://stackoverflow.com/a/12477536/446681

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12616694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档