前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NodeJS学习二(模板引擎的配置和使用)

NodeJS学习二(模板引擎的配置和使用)

作者头像
bering
发布2019-12-02 14:00:11
6930
发布2019-12-02 14:00:11
举报
文章被收录于专栏:游戏开发之旅游戏开发之旅

当页面内容比较多的时候,如果像上一节中说到的在绑定路由使用app.send()方法返回大量的html字符串是不现实的,这个时候通常需要配置模板使其返回对应的页面。

配置swig模板引擎分为四个步骤:

1)加载模板引擎

2)配置模板引擎应用模板

3)设置模板文件存放目录

4)注册模板

5)路由中返回模板

代码语言:javascript
复制
//应用程序的启动入口文件
 
//加载express模块
var express = require('express');
//创建app应用,相当于nodeJS的http.createService()
var app = express();
 
//1加载模板处理模块
var swig = require('swig');
//2配置模板应用模块
//定义当前应用所使用的模板引擎,第一个参数:模板引擎名称,同时也是模板文件的后缀;第二个参数:解析处理模板内容的方法
app.engine('html',swig.renderFile);
//3设置模板文件存放的目录,第一个参数必须是views,第二个参数是目录
app.set('views','./views');
//4注册模板,第一个参数:必须是view engine,第二个参数与定义模板引擎的第一个参数名称一致
app.set('view engine','html')
 
/**
 * [description] 给app绑定首页路由,把一个url路径通过一个或多个方法绑定
 * @param  {[type]} req       request对象,保存客户端请求相关的一些数据
 * @param  {[type]} res       response对象
 * @param  {[type]} next){} 函数,用于执行下一个和当前路径匹配的函数
 * @return {[type]}           [description]
 */
app.get('/',function(req,res,next){
	//res.send(string)发送内容直客户端
	// res.send('<h1>欢迎来到我的博客!</h1>')
	
	//5读取views目录下的指定文件,解析并返回给客户端
	//第一个参数:模板的文件相对于views/index.html
	//第二个参数:传递给模板使用的数据
 
	res.render('index');
})
 
//监听http请求
app.listen(8081);

在views目录下新建index.html文件:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<h1>欢迎光临我的博客</h1>
</body>
</html>

运行app.js文件,打开浏览器输入localhost:8081会出现相应的页面信息。

但是在当改变index.html内容后刷新页面不会即使刷新,这是因为引擎第一次读取模板会将其缓存到内存中,再次读取会从缓存中直接获取,需要重启服务才能看到效果。因此要渠道模板引擎的缓存,修改后app.js代码如下:

代码语言:javascript
复制
//应用程序的启动入口文件
 
//加载express模块
var express = require('express');
//创建app应用,相当于nodeJS的http.createService()
var app = express();
 
//1加载模板处理模块
var swig = require('swig');
//2配置模板应用模块
//定义当前应用所使用的模板引擎,第一个参数:模板引擎名称,同时也是模板文件的后缀;第二个参数:解析处理模板内容的方法
app.engine('html',swig.renderFile);
//3设置模板文件存放的目录,第一个参数必须是views,第二个参数是目录
app.set('views','./views');
//4注册模板,第一个参数:必须是view engine,第二个参数与定义模板引擎的第一个参数名称一致
app.set('view engine','html')
//5第一次读取会把模板缓存到内存当中,下次会直接读取,因此即使改了模板内容刷新也不会有变化,需要在开发过程中需要取消模板缓存
swig.setDefaults({cache:false});
 
/**
 * [description] 给app绑定首页路由,把一个url路径通过一个或多个方法绑定
 * @param  {[type]} req       request对象,保存客户端请求相关的一些数据
 * @param  {[type]} res       response对象
 * @param  {[type]} next){} 函数,用于执行下一个和当前路径匹配的函数
 * @return {[type]}           [description]
 */
app.get('/',function(req,res,next){	
	//6读取views目录下的指定文件,解析并返回给客户端
	//第一个参数:模板的文件相对于views/index.html
	//第二个参数:传递给模板使用的数据
 
	res.render('index');
})
 
//监听http请求
app.listen(8081);

本文重点:

代码语言:javascript
复制
//1.加载模板处理文件
var swig=require('swig');


//2.配置模板应用模块儿
//定义当前应用使用的模板引擎,第一个参数:模板引擎名称,同时也是
//模板文件的后缀;第二个参数:解析处理模板内容的方法
app.engine('html',swig.renderFile);


//3.设置模板文件存放的目录
//第一个参数必须是views,第二个参数是目录
app.set('views','./views');

//4.注册模板
//第一个参数:必须是view engine;
//第二个参数:与定义模板引擎的第一个参数名称一致
app.set('view engine','html');

//5. 第一次读取会把模板存到内存中,下次会直接读取内存中的数据
// 因此即使改了模板内容刷新也不会有变化,需要在开发中取消模板缓存
swig.setDefaults({cache:false});  //取消模板缓存
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档