📅  最后修改于: 2023-12-03 15:37:20.084000             🧑  作者: Mango
在 Express 中,EJS 是一种常用的模板引擎,可以帮助我们动态渲染网页内容。但是默认情况下,Express 会在应用程序的根目录的 views
文件夹中寻找 EJS 模板文件。有时,我们希望把存放模板文件的目录设置为其他位置,例如根据不同的功能拆分成多个子目录。那么该如何在 Express 中设置 EJS 视图目录呢?
首先,我们需要在应用程序中准备一个或多个 EJS 视图文件。创建一个名为 view.ejs
的文件,将以下代码复制粘贴到文件中:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>EJS 视图文件</title>
</head>
<body>
<h1>Hello, <%= name %>!</h1>
</body>
</html>
接着,我们需要确保已经安装 EJS 模板引擎。在命令行中执行以下命令:
npm install ejs --save
如果没有安装过 EJS,那么上述命令将会在当前目录下的 node_modules
文件夹中安装 EJS。
在应用程序中,我们需要引入并设置 EJS 模板引擎。另外,我们还需要设置存放模板文件的目录。
在项目根目录下,创建一个名为 app.js
的文件,将以下代码复制粘贴到文件中:
const express = require('express');
const app = express();
// 设置 EJS 模板引擎
app.set('view engine', 'ejs');
// 设置存放模板文件的目录
app.set('views', 'views');
// 监听端口
app.listen(3000, () => console.log('Server started at http://localhost:3000'));
上述代码中,app.set('view engine', 'ejs')
表示设置使用 EJS 模板引擎。app.set('views', 'views')
表示设置存放模板文件的目录为项目根目录下的 views
目录。也就是说,Express 将会在 views
目录下寻找模板文件。
最后,我们需要编写一个路由处理程序,将数据传递给视图文件,渲染生成 HTML 页面。在 app.js
中添加以下内容:
// 路由处理程序
function index(req, res) {
// 渲染 EJS 视图文件
res.render('view', { name: 'world' });
}
// 设置路由
app.get('/', index);
上述代码中,res.render('view', { name: 'world' })
表示渲染名为 view
的视图文件,并传递一个 JSON 对象 { name: 'world' }
,其中 name
变量的值为 'world'
。这里使用的是 EJS 中的上下文变量,也就是数据模型。
现在,我们已经完成了在 Express 中设置 EJS 视图目录的所有步骤。在命令行中执行以下命令:
node app.js
然后,在浏览器中打开 http://localhost:3000
,查看结果。
你应该会看到一条带有 Hello, world!
的消息。这证明了我们已经使用 EJS 渲染了一个视图文件,并成功将数据传递给了该文件。