我想我可以在这里帮助你。我给你解释一下。
layout.ejs 确实是您需要拥有一个 HTML 站点的布局,由 sn-ps 代码构建而成:)。
我的 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>
我会给你一个代码的解释。 “标题”标签是我所有内容的包装器(800x600)。使用“部分”命令,您可以加载源代码的 sn-ps。在我的示例中,“topic.ejs”是我的主题设计,其中包含应保留在每个页面上的图像和颜色(您可以说它是静态的)。
topic.ejs 的源代码:(实际上只是 html-tags,以 div 开头,以 :P 结尾)
<!-- frame of topic -->
<div id="topic">
...
</div> <!-- end of "topic" -->
现在每个页面都实现了我的topic.ejs(如果你按照第一个源代码,你可以看到它):
"".
这意味着:嘿布局!每个页面都实现了这部分代码,明白了吗?! -好的。
但是“”-命令呢?
这也很容易理解。 app.js 将关心 究竟会做什么。但是它是怎么做的,我稍后会解释。
如您所知,HTML 页面的第一页名为“index.html”。所以在这里,我们也应该使用我们的 index.html 并将其编译为“index.ejs”。使用与“topic.ejs”相同的过程。将源代码简化为 html-tags,例如:
<!-- 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 是一个随机名称。自己选一个。这个名字现在是你的 URL。不明白吗?看下面的例子。通过执行 app.js 启动服务器后,您的服务器在一个特别的端口上运行(我猜默认为 3000)。您通常的 index.html 网址应该是“localhost:3000/index.html”。在浏览器的地址栏中键入它。应该显示您的网站。现在试试这个:
本地主机:端口/xyz
在前面显示的 app.get-methode 中,您明确地说您的 app.js:在“/xyz”路径后面有“index.ejs”文件。但这究竟意味着什么?
这意味着您现在可以在浏览器的地址栏中键入“locallhost:PORT/xyz”,您的原始 index.html 站点的内容将被显示,但您将看到的是 layout.ejs 生成的内容。魔术!
背后的逻辑:(如果您再次查看 layout.ejs)
使用 命令,您只需将源代码的 sn-p 加载到布局中。只需这样做:运行您的站点后,右键单击它并让您显示源代码。它应该是一个普通的 HTML 源代码。实际上,它是您的 layout.ejs 的源代码,它占用了您的代码的一些 sn-ps。
多合一:
使用 layout.ejs 中的 命令,您可以加载 sn-p 代码。 = "index.ejs"、"contact.ejs" 等等。对于每个 .ejs 文件,您需要将 app.js 扩展到其“get”方法(示例如下)。如果您有多个站点(当然您只是没有一个站点),您需要将新站点的代码的 sn-p 放入一个 .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 中选择的名称。例如它更改为 onclick="window.location.replace('contact')"。
onclick="window.location.replace('contact.html')" 变成
onclick="window.location.replace('contact')"
您只是链接到 URL 名称,而不是文件。 App.js 现在将为您处理这个问题:)