是否可以添加多个<% - %>对node.js ejs布局的语句

时间:2011-02-25 17:42:14

标签: node.js ejs

我刚开始使用node.js,express和ejs。而且我在layout.ejs文件上遇到了困难。我想要做的是类似于你在.net中可以做的事情,你有多个内容占位符,在视图中你可以有多个块进入不同的占位符。

这样的事情:

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

我的观点应如何?

2 个答案:

答案 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>