5

我刚开始使用 node.js、express 和 ejs。而且我很难处理 layout.ejs 文件。我正在尝试做的事情类似于您可以在.net 中执行的操作,其中您有多个内容占位符,并且在视图中您可以有多个块进入不同的占位符。

像这样的东西:

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

我的观点应该是什么样子?

4

2 回答 2

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>

对于更复杂的标头,您还可以使用部分标头:

my_body.ejs:

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

_header.ejs:

<h1>My Page Title</h1>

布局.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>
于 2011-03-17T21:47:53.890 回答
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

的此代码 <%-body %>-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 并生成整个代码。

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

现在您必须修改所有.ejs-files,但您的 layout.ejs。这表示:

您的 index.ejs 文件只包含 html-tags。但是没有标题,没有文档类型等等......,只有你的“Body”的所有标签(从<“body”>到</body>)。

= 您的 index.ejs 文件:

<div>
...
</div>
于 2012-06-04T12:29:13.827 回答