gpt4 book ai didi

node.js - EJS 作为包装器包含

转载 作者:太空宇宙 更新时间:2023-11-04 00:28:51 25 4
gpt4 key购买 nike

我可以包含另一个包含当前内容的 .ejs 文件吗?

我想要一个像这样的总体布局:布局.js:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="header"></div>
<div id="content">
<!-- I want to "inject" my code here -->
</div>
</body>
</html>

我想使用另一个文件中的这个模板,如下所示:内容.ejs

<% inside(layout) ? { %>
<a href="">content</a>
<% } %>

我可以做这样的事情吗?

我目前正在以相反的方式这样做,我使用参数 include_name 调用布局,但这有点不方便。我想调用相关的 content.ejs 其中包括通用内容本身。这可能吗?

谢谢

最佳答案

来自EJS Documentation :

EJS does not specifically support blocks, but layouts can be implemented by including headers and footers, like so:

<%- include('header') -%>
<h1>
Title
</h1>
<p>
My page
</p>
<%- include('footer') -%>

尽管有些框架有一些工​​具来处理问题。例如Express直到版本 3.x 有了布局支持,对于最新版本,您可以将其用作独立的 npm 包:express-partials

使用此包后,您可以定义 <%- body %>框架模板 (layout.ejs) 中的区域,当您调用所需布局 (content.ejs) 时,express 会将 layout.ejscontent.ejs 渲染为 <%- body %> (除非您设置 {layout:false} ,否则它只会渲染 content.ejs):

布局.ejs

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="header"></div>
<div id="content">
<%- body %>
</div>
</body>
</html>

内容.ejs

<a href="">content</a>

app.js

var express = require('express')
, partials = require('express-partials')
, app = express();

// load the express-partials middleware
app.use(partials());

app.get('/',function(req,res,next){
res.render('content.ejs')
// -> render layout.ejs with content.ejs as `body`.
})

app.listen(3000);

关于node.js - EJS 作为包装器包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41762219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com