Page 106 - Node.js开发指南
P. 106
5.4 模板引擎 99
ejs 的标签系统非常简单,它只有以下3种标签。 1
<% code %>:JavaScript 代码。
<%= code %>:显示替换过 HTML 特殊字符的内容。
<%- code %>:显示原始 HTML 内容。
我们可以用它们实现页面模板系统能实现的任何内容。 2
5.4.3 页面布局
上面的例子介绍了页面模板的翻译,但我们看到的不止这两行,原因是 Express 还自动 3
套用了 layout.ejs,它的内容是:
<!DOCTYPE html>
<html>
4
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<%- body %>
</body> 5
</html>
layout.ejs 是一个页面布局模板,它描述了整个页面的框架结构,默认情况下每个单独的
页面都继承自这个框架,替换掉 <%- body %> 部分。这个功能通常非常有用,因为一般为
6
了保持整个网站的一致风格,HTML 页面的<head>部分以及页眉页脚中的大量内容是重复
的,因此我们可以把它们放在 layout.ejs 中。当然,这个功能并不是强制的,如果想关闭它,
可以在 app.js 的中 app.configure 中添加以下内容,这样页面布局功能就被关闭了。
7
app.set('view options', {
layout: false
});
另一种情况是,一个网站可能需要不止一种页面布局,例如网站分前台展示和后台管理
8
系统,两者的页面结构有很大的区别,一套页面布局不能满足需求。这时我们可以在页面模
板翻译时指定页面布局,即设置 layout 属性,例如:
function(req, res) {
9
res.render('userlist', {
title: '用户列表后台管理系统',
layout: 'admin'
});
};
这段代码会在翻译 userlist 页面模板时套用 admin.ejs 作为页面布局。 10