2011-02-25 37 views
5

我刚刚开始使用node.js,express和ejs。而且我对layout.ejs文件很困难。我试图做的是类似于你可以在.net中做什么,你有多个内容占位符,在视图中你可以有多个块进入不同的占位符。是否可以将多个<%- %>语句添加到node.js ejs布局

事情是这样的:

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

我的看法应该看怎么样?

回答

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> 

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> 
+0

不完全是我所希望的,但这完成了工作。非常感谢:) – 2011-03-18 11:11:31

+0

我很确定稍后会添加更好的解决方案。这个项目现在还不像其他项目那么成熟。 – 2011-03-18 13:35:40

+0

“my_body.ejs”被调用了哪里? – 2011-06-27 23:32:08

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

的<% - 身体%> - 标签应该在你的 “app.js” 定义为GET-梅索德:

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

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

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

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

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

= 您的索引。ejs文件:

<div> 
... 
</div> 
相关问题