Template Engine是一个从页面模板(html页面模板)根据一定的规则(插入可执行的代码)生成(运行时动态生成)HTML的工具。
在MVC架构中,模板引擎包含在服务器端,控制器(Express即C)得到用户请求后,从模型(M)获取数据,调用模板请求(ejs)。模板请求(ejs)以数据(模型M)和页面模板(ejs视图V)为输入,生成HTML页面,然后返回给控制器(Express即C),由Express控制器交回给客户端。
在app.js中通过以下语句设置了模板引擎和页面模板的位置:
var path = require(‘path’);
//view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
表明要使用的模板引擎是ejs,页面模板在views子目录下。在routes/index.js的module.exports = router函数中通过如下语句调用模板引擎:
res.render('index', {title: 'Express'});
render的功能是调用模板引擎,并将其产生的页面直接返回给客户端。它接受两个参数,第一个是模板的名称,即views目录下的模板文件名,不包含文件的扩展名;第二个参数是传递给模板的数据,用于模板翻译。
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
上面代码中有两处<%= title %>,用于模板变量显示,它们在模板翻译时会被替换成Express,因为res.render传递了{title: 'Express'}。
ejs的标签系统非常简单,它只有以下三种标签。
<% code %>:JavaScript代码。
<%= code %>显示替换过HTML特殊字符的内容。
<%- code %>显示原始HTML内容。
我们可以用他们来实现页面模板系统能实现的任何内容。