ejs中的“yield”方法是什么?

我刚刚开始使用node.js + express + ejs。 我无法find任何地方如何将请求的ejs文件拉到布局文件。

我完全清楚,这里的yield不是正确的。

例如

layout.ejs

 <html> <head><title>EJS Layout</title></head> <body> <%= yield %> </body> </html> 

index.ejs

 <p>Hi</p> 

最后find一个快速应用程序的一些源代码:

 <%- body %> 

我想我可以在这里帮助你。 我会给你一些解释。

layout.ejs是真正的布局,你需要有一个HTML网站,由代码片段构build:)。

我的layout.ejs看起来像:

 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head> <title><%- title %></title> <link rel="stylesheet" type="text/css" href="stylesheets/style.css"> </head> <body> <!-- total container --> <header> <%- partial('topic.ejs') %> <%- body %> </header> </body> </html> 

我会给你一个代码的解释。 “标题”标签是我的包装(800×600)与我所有的内容。 使用“部分”命令,您可以加载源代码片段。 在我的例题中,“topic.ejs”是我的主题devise,图像和颜色应该保留在每一页上(可以说它是静态的)。
topic.ejs的源代码:(它实际上只是HTML标签,以div开头,以P结尾)

 <!-- frame of topic --> <div id="topic"> ... </div> <!-- end of "topic" --> 

现在每个页面都实现了我的topic.ejs(如果你按照第一个源代码,你可以看到它):
“<% – 部分('topic.ejs')%>”。
这意味着:嘿布局! 每个页面都有这个部分的代码实现,得到它? -好。

那么“ <% – body%> ”命令呢? 理解也很容易。 app.js会关心<% – body%>究竟会做什么。 但是它是怎么做的,我稍后会解释它。
您应该知道,HTML页面的第一页被命名为“index.html”。 所以就在这里,我们也应该把我们的index.html编译成“ index.ejs ”。 使用与“topic.ejs”相同的程序。 减less源代码到html标签,如:

 <!-- frame of MetaContent --> <div id="metacontent"> ... </div> <!-- end of "MetaContent" --> 

从这里你应该看看我的app.js

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

说明:xyz是一个随机名称。 select一个自己。 这个名字现在是你的url。 不明白吗? 看下面的例子。 通过执行app.js启动你的服务器之后,你的服务器运行在一个特别的端口上(我想是默认的3000)。 您通常的index.htmlurl应该是“localhost:3000 / index.html”。 在浏览器的地址栏中input。 你的网站应该显示。 现在试试这个:

本地主机:PORT / XYZ

在前面显示的app.get-methode中,你明确地说你的app.js:在“/ xyz”path后面有“index.ejs”文件。 但是,这到底意味着什么呢?
这意味着你现在可以在你的浏览器的地址栏中input“locallhost:PORT / xyz”,你的原始index.html网站的内容会显示出来,但是你会看到layout.ejs的生成内容。

背后的逻辑:(如果你再次看一下layout.ejs)
使用<% – body%>命令,您只需将代码加载到布局中即可。 只要做到这一点:运行您的网站后,右键单击它,让你显示源代码。 它应该是一个通常的HTML源代码。 实际上它是你的layout.ejs的源代码,它代码片段。

一体:
使用layout.ejs中的<% – body%>命令,可以加载代码片段。 <% – body%> =“index.ejs”,“contact.ejs”等等。 对于每个.ejs文件,您需要将app.js扩展为其“get”–methode(示例如下)。 如果你有更多的网站(当然你没有一个网站),你需要把新网站的代码片段放入一个.ejs文件(例如:contact.html => contact.ejs)。 你也需要扩展你的app.js文件到这个:

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

要么

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

不要忘记更改.ejs文件中的链接:onclick =“window.location.replace('contact.html')”变成您在app.get-methode中select的名称。 例如,它更改为onclick =“window.location.replace('contact')”。

onclick =“window.location.replace(' contact.html ')”BECOMES TO onclick =“window.location.replace(' contact ')”

你只要链接到URL名称,而不是文件。 App.js将现在为您处理:)