我刚开始使用node.js,express和ejs。而且我在layout.ejs文件上遇到了困难。我想要做的是类似于你在.net中可以做的事情,你有多个内容占位符,在视图中你可以有多个块进入不同的占位符。
这样的事情:
<!DOCTYPE html>
<html>
<head>
<title><%- title %></title>
</head>
<body>
<%- body %>
</body>
</html>
我的观点应如何?
答案 0 :(得分:6)
对于给定的布局文件,您可以编写包含以下内容的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>
答案 1 :(得分:1)
而不是
<!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
&lt;% - body%&gt; -tag 应在“ app.js ”中定义为get-methode:
app.get('/index', function(req, res){
res.render('index.ejs', { title: 'My Site'});
});
现在您可以通过“localhost:PORT / index”(默认端口:3000)将您的index.html(“index.ejs”)路由(在浏览器中键入您的地址栏),“app.js”将路由index.ejs并生成整个代码。
使用&lt;% - partial('header.ejs')%&gt; ,您可以加载代码片段。标题通常应该加载到您的每个站点上(标题是静态的)。
现在,您必须修改所有 .ejs文件,但是您的layout.ejs。这意味着:
您的index.ejs文件只包含html标签。但没有标题,没有doctype 等等......,只是你的“身体”的所有标签(从&lt;“body”&gt;到&lt;“/ body”&gt;)。
= 你的index.ejs文件:
<div>
...
</div>