NodeJS學習二(模板引擎的配置和使用)

  • 2019 年 12 月 2 日
  • 筆記

當頁面內容比較多的時候,如果像上一節中說到的在綁定路由使用app.send()方法返回大量的html字符串是不現實的,這個時候通常需要配置模板使其返回對應的頁面。

配置swig模板引擎分為四個步驟:

1)加載模板引擎

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

3)設置模板文件存放目錄

4)註冊模板

5)路由中返回模板

//應用程序的啟動入口文件    //加載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文件:

<!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代碼如下:

//應用程序的啟動入口文件    //加載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);

本文重點:

//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});  //取消模板緩存