node 中使用模板引擎

代碼片段

在 Express 中使用 ejs 模板引擎

安裝:

  $ npm install --save ejs

配置 Express 使用 ejs 模板

  • app.set('views', config.viewPath);
    • 配置模板文件存放的路徑
  • app.set('view engine', 'ejs');
    • 配置調用 res.render 的時候使用的模板引擎
    • 找到 view 目錄下的 .ejs 后綴的文件
  app.set('views', '視圖模板文件存放路徑')
  app.set('view engine', '安裝的模板引擎的名稱,例如:ejs')

如果使用上面的配置,則視圖的后綴名必須為 .ejs,如果想要修改視圖的后綴名,可以使用下面的配置形式

  app.engine('.html', require('ejs').__express)
  app.set('view engine', 'html')

使用:

只要執行了上面兩句代碼:就可以直接在后面的請求處理函數中使用 res.render(視圖名稱,要注入的數據對象),然后express會自動幫你去讀取文件然后注入數據,解析替換,最后得到一個完整的 html 頁面,然后發送給客戶端。

views/index.html 文件代碼如下:

  <!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Document</title>
  </head>
  <body>
    <h1>Hello <%= name %></h1>
  </body>
  </html>

app.js 文件代碼如下:

  app.get('/', (req, res) => {
    res.render('index', {
      name: 'World'
    })
  })

瀏覽器中看到的最終渲染結果如下:

  <!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Document</title>
  </head>
  <body>
    <h1>Hello World</h1>
  </body>
  </html>

在 Express 中使用 xTemplate 模板引擎

安裝

  $ npm install xtpl xtemplate --save 

配置模板引擎

1、渲染的頁面必須是 .xtpl 后綴的

  // 引入路徑配置文件
  const config = require('./config');
  // 指定模板放在什么地方了
  app.set('views', config.viewPath);
  // 指定使用哪個模板引擎
  app.set('view engine', 'xtpl');

2、渲染頁面任然是 .hmtl 后綴的

  const config = require('./config');
  app.set('views', config.viewPath);
  app.engine('.html', require('xtpl').__express);
  app.set('view engine', 'html');

Node 走通頁面流程

1、安裝包:

  $ npm install --save express
  $ npm install xtpl xtemplate --save

2、views 文件下添加要渲染的 layout/base.html 頁面視圖文件

  <!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>后臺管理系統</title>
  </head>
  <body>
    <!-- 側邊欄 -->
    <div class="aside">
      <!-- ... -->
    </div>
    <!-- 主體 -->
    <div class="main">
      <div class="container-fluid">
        <!-- 頭部 -->
        <div class="header">
          <!-- ... -->
        </div>
        <!-- 個人資料 -->
        {{{block('content')}}}  
      </div>
    </div>
  </body>
  </html>

3、中間需要替換的內容

  {{extend('../layout/base')}}
  {{#block('content')}}
  <!-- 個人資料 -->
  <div class="body teacher-profile">
    <!-- ... -->
  </div>
  {{/block}}

4、入口程序:app.js

  //  引入包
  const express = require('express');
  // 加載子路由
  const index = require('./controllers/index');
  // 配置模板引擎
  app.set('views', config.viewPath);
  app.engine('.html', require('xtpl').__express);
  app.set('view engine', 'html');
  // 暴漏靜態資源
  app.use('/',express.static('public'));
  // 監聽端口
  app.listen(5000, () => {
    console.log(`Server is running at port ${config.port}`);
  }); 

5、設置子路由,contorllers/index.js

  // 首頁當做一個子路由
  const express = require('express');
  // express 有個方法叫 Router() 方法,創建子路由
  const router = express.Router();
  // 當成一個模塊加載,對外暴漏接口,子路由暴漏出去了
  module.exports = router;
  // 設置子路由
  router.get('/', function (req, res) {
    res.render('dashboard/index', {});
  });

博客原文鏈接地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

推薦閱讀更多精彩內容