Express - 使用模版渲染
Express可以使用jade, ejs作为模版引擎进行模版渲染,默认是jade,使用ejs作为模版引擎需要进行设置
1. 使用ejs模版
- 安装ejs模块
npm install ejs --save
- 设置ejs模版
// 设置模版文件目录
app.set('views', './templates');
// 设置模版引擎
app.set('view engine', 'ejs');
- 使用ejs模版
const express = require('express');
const app = express();
// 设置模版文件目录
app.set('views', './templates');
// 设置模版引擎
app.set('view engine', 'ejs');
// 在templates/site/index.ejs中渲染title变量
app.get('/', (req, resp) => {
resp.render('site/index', {
title: 'home'
});
});
app.listen(8080, () => {
console.log('listen on 8080');
});
// index.ejs模版
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title><%= title %></title>
</head>
<body>
</body>
</html>
2. ejs模版语法
- 转义输出变量
<%= title %>
- 不转义输出
<%- titel %>
- 执行js代码
<% code %>
- 导入其他模版
<% include template/path %>
- 条件判断
<% if(condition) { %>
// HTML
<% } %>
- 循环
<% list.forEach((item) => { %>
<%= item %>
<% }) %>
//index.js
const express = require('express');
const app = express();
app.set('views', './templates');
app.set('view engine', 'ejs');
app.get('/', (req, resp) => {
const users = [
{id: 1, name: 'mike'},
{id: 2, name: 'jack'}
];
resp.render('site/index', {
users: users,
show: !!req.query.show
});
});
app.listen(8080, () => {
console.log('listen on 8080');
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>user list</title>
</head>
<body>
<% if (show) %>
<ul>
<% users.forEach((user) => { %>
<li><%= user.id %> - <%= user.name %></li>
<% }) %>
</ul>
<% } %>
</body>
</html>