📅  最后修改于: 2023-12-03 15:00:40.171000             🧑  作者: Mango
在使用Express框架时,我们通常会使用模板引擎来处理动态页面的渲染。其中,EJS是一个广泛使用的模板引擎,它允许我们使用布局来管理页面的结构。 在本篇文章中,我们将介绍如何使用不同的布局来渲染页面,以实现更灵活的页面结构。
EJS布局是一种用于管理页面结构的技术。在EJS中,我们可以通过定义不同的布局来控制页面的外观和结构。在每个布局中,我们可以定义页面的头部和尾部等通用部分,并在不同的页面中重复使用。
在使用EJS之前,我们需要先安装它。在终端中使用如下命令即可:
npm install ejs --save
在EJS中,一个布局通常由两部分组成 - 头部和尾部。对于每个页面,我们可以将它们放在布局的适当位置,并将实际的内容插入到头部和尾部之间。
在下面的示例中,我们定义了一个名为"layout.ejs"的布局:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<header>
<h1>My Site</h1>
</header>
<main>
<%= content %>
</main>
<footer>
My Site © 2021
</footer>
</body>
</html>
在这个布局中,我们定义了一个包含头部和尾部的基本HTML模板。在头部中,我们使用了EJS语法来动态地添加页面标题(即通过变量“title”传递的值)。在主体中,我们使用了另一种EJS语法来引用“content”变量,该变量将由每个具体页面的内容替换。
在我们定义了布局之后,我们就可以开始定义具体的页面了。在下面的示例中,我们定义了一个名为"index.ejs"的页面:
<% layout('layout') %>
<p>Welcome to my site!</p>
在这个页面中,我们通过使用EJS语法来指定要使用的布局(即"layout.ejs"),并将实际的页面内容放在布局头部和尾部之间。
注意,在EJS中使用布局需要安装ejs-locals
包。可以通过以下命令进行安装:
npm install ejs-locals --save
在定义好布局和页面之后,我们需要在应用程序中指定要使用的视图引擎和视图目录。在下面的示例中,我们将EJS视图引擎设置为默认视图引擎,并将视图目录设置为"./views":
const express = require("express");
const app = express();
const ejs = require("ejs");
const ejsLayouts = require("ejs-locals");
app.set("views", "./views");
app.set("view engine", "ejs");
app.engine("ejs", ejsLayouts);
在这个示例中,我们首先使用require
语句加载了我们需要的模块(即Express、EJS和ejs-locals)。然后,我们使用了app.set
方法来指定要使用的视图引擎和视图目录。最后,我们使用了app.engine
方法来设置EJS视图引擎和布局。
在修改好App.js文件之后,我们就可以使用Express来运行我们的应用程序了。通过以下命令启动服务器:
node app.js
现在,我们可以在浏览器中打开"http://localhost:3000",并查看我们的页面是否成功渲染。
在我们了解了如何使用单个布局之后,还可以使用多个布局来处理不同类型的页面。在下面的示例中,我们将定义两个不同的布局,即"layout.ejs"和"bloglayout.ejs":
<!-- layout.ejs -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<header>
<h1>My Site</h1>
</header>
<main>
<%= content %>
</main>
<footer>
My Site © 2021
</footer>
</body>
</html>
<!-- bloglayout.ejs -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<header>
<h1>My Blog</h1>
</header>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog">Blog</a></li>
</ul>
</nav>
<main>
<%= content %>
</main>
<footer>
My Blog © 2021
</footer>
</body>
</html>
在这个示例中,我们创建了两个布局,分别用于整个网站和博客部分。在第一个布局中,我们只包含了基本的网站结构,而在第二个布局中,我们添加了一个导航栏来帮助用户导航博客部分。
确定了布局之后,我们可以开始在程序中使用它们。在下面的示例中,我们将使用不同的布局来渲染"index.ejs"和"blog.ejs"页面:
<!-- index.ejs -->
<% layout('layout') %>
<p>Welcome to my site!</p>
<!-- blog.ejs -->
<% layout('bloglayout') %>
<h2>My Blog</h2>
<p>Welcome to my blog!</p>
在这个示例中,我们使用了两个带有不同布局的页面。在第一个页面中,我们使用了"layout.ejs"布局,而在第二个页面中,我们使用了"bloglayout.ejs"布局。这样,我们就可以为不同类型的页面定义不同的结构和样式。
使用EJS布局是一种方便而灵活的技术,可以帮助我们更好地管理页面的结构和样式。在本篇文章中,我们介绍了如何使用不同的布局来渲染页面,并提供了详细的示例和代码。希望本文能帮助你更好地运用EJS和Express框架来构建Web应用程序。