是否可以将多个<% – %>语句添加到node.js ejs布局

我刚刚开始使用node.js,express和ejs。 我正在用layout.ejs文件很难。 我想要做的是类似于你可以在.net中做什么,你有多个内容占位符,在视图中,你可以有多个块进入不同的占位符。

像这样的东西:

<!DOCTYPE html> <html> <head> <title><%- title %></title> </head> <body> <%- body %> </body> </html> 

我的观点应该如何?

对于给定的布局文件,您可以编写一个my_body.ejs文件,其中包含:

 <% title = 'My Page – My Site' %> <p>The body content could go there</p> 

这将呈现:

 <!DOCTYPE html> <html> <head> <title>My Page – My Site</title> </head> <body> <p>The body content could go there</p> </body> </html> 

对于更复杂的头文件,你也可以使用partial:

my_body.ejs:

 <% header = partial('_header.ejs') %> <p>The body content could go there</p> 

_header.ejs:

 <h1>My Page Title</h1> 

layout.ejs:

 <!DOCTYPE html> <html> <head> <title>My Page – My Site</title> </head> <body> <div id="header"><%- header %></div> <div id="content"><%- body %></div> </body> </html> 

代替

 <!DOCTYPE html> <html> <head> <title>My Page – My Site</title> </head> <body> <div id="header"><%- header %></div> <div id="content"><%- body %></div> </body> </html> 

你可以使用

 <!DOCTYPE html> <head> <title><%= title%></title> </head <html> <%- partial('header.ejs') %> <%- body %> </html> 

这个代码为你的layout.ejs

<% – body%> – 标签应该在你的“ app.js ”中定义为get-methode:

 app.get('/index', function(req, res){ res.render('index.ejs', { title: 'My Site'}); }); 

现在,您可以通过“localhost:PORT / index”(默认端口:3000)(在您的浏览器中input您的地址栏)路由index.html(“index.ejs”),“app.js”将路由index.ejs并生成整个代码。

使用<% – partial('header.ejs')%>你可以加载你的代码片段。 一个标题通常应该加载到你的每一个站点上(这个标题是静态的)。

现在你必须修改所有的.ejs文件 ,但你的layout.ejs。 意即:

你的index.ejs文件只包含html标签。 但没有标题,没有文档types等等,只是你的“身体”(从<“body”>到<“/ body”>)的所有标签。

=你的index.ejs文件:

 <div> ... </div>