express 之 ejs模板引擎

ejs模板引擎

官方文檔

一晰绎、簡(jiǎn)介

相比于jade模板引擎彼硫,ejs對(duì)原HTML語(yǔ)言就未作出結(jié)構(gòu)上的改變吃溅,只不過(guò)在其交互數(shù)據(jù)方面做出了些許修改溶诞,相比于jade更加簡(jiǎn)單易用。因此其學(xué)習(xí)成本是很低的决侈。

二螺垢、安裝

如果使用express腳手架創(chuàng)建項(xiàng)目,項(xiàng)目默認(rèn)中已經(jīng)包含了ejs模板引擎<br />如果不是采用express創(chuàng)建的項(xiàng)目,或者項(xiàng)目中沒(méi)有,可以使用以下命令安裝

cnpm install ejs --save

二、基本使用

我們?cè)趀xpress項(xiàng)目中簡(jiǎn)單使用ejs模板引擎:

movies.ejs文件

注意后綴名為.ejs,是ejs模板引擎規(guī)定的文件格式,其中使用ejs模板語(yǔ)法渲染為Html文件

<!DOCTYPE html>
<html>
  <head>
    <title>電影列表</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1>電影列表</h1>
    <ul>
      <!--<% %> 是編寫(xiě)javascript代碼的ejs模板引擎語(yǔ)法 -->
      <% movies.forEach(function(item){ %>
        <li>
          <h4>電影名稱(chēng):</h4>
          <p><%= item.name %></p>
          <h4>簡(jiǎn)介:</h4>
          <p><%= item.brief %></p>
          <h4>導(dǎo)演:</h4>
          <p><%= item.author %></p>
        </li>
        
      <% }); %>
     
    </ul>
  </body>
</html>

app.js文件:

var express = require('express');
var path = require('path');
var app = express();

// 設(shè)置模板引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

//定義一個(gè)路由,此處未使用express中的Router
app.get('/movies', function(req, res, next) {
  //定義需要渲染到HTML頁(yè)面中的電影列表
    let movies =  [{
      name:'斗戰(zhàn)勝佛之大圣之淚',
      brief:'成為斗戰(zhàn)勝佛的孫悟空竟被怨靈蠱惑赖歌,唐三藏遭遇滅頂之災(zāi)枉圃!危急關(guān)頭,孫悟空揪出怨靈源頭庐冯,卻發(fā)現(xiàn)她竟是與自己有三百年緣分的天人界女神——“幸運(yùn)星”孽亲!為了找出“幸運(yùn)星”黑化的原因,拯救唐三藏展父,孫悟空踏上了一場(chǎng)回到過(guò)去之旅返劲,卻最終流下了一滴眼淚玲昧。大圣之淚,為何而流篮绿,為誰(shuí)而流孵延?',
      author:'鐘智行 Frankie Chung'
    },{
      name:'獵謊者',
      brief:'三個(gè)月前,某市發(fā)生了一起惡性綁架殺人案搔耕。三個(gè)月后隙袁,兇手與被害人都死于車(chē)禍。初出茅廬的女警韓燁找到了案件的幸存者林超凡弃榨,向他求證案件發(fā)生的經(jīng)過(guò)菩收。但隨著調(diào)查的深入,韓燁發(fā)現(xiàn)林超凡的很多證詞都存在漏洞鲸睛,再三逼問(wèn)之下娜饵,林超凡無(wú)奈坦白了另一個(gè)版本的故事,但案件真相遠(yuǎn)沒(méi)有這么簡(jiǎn)單官辈,幾乎每個(gè)人都在說(shuō)謊箱舞,而故事也開(kāi)始不斷反轉(zhuǎn)。',
      author:'廉欣 Xin Lian'
    },{
      name:'天啟大爆炸',
      brief:'《天啟大爆炸》以中國(guó)古代曾真實(shí)發(fā)生的神秘爆炸為原型拳亿,加以天馬行空的巧妙構(gòu)思晴股,為觀眾解封至今困惑世人的隱秘真相。神秘機(jī)構(gòu)“夜行司”追蹤離奇謎團(tuán)勇闖“無(wú)相城”肺魁,一場(chǎng)關(guān)乎百姓蒼生命運(yùn)博弈就此展開(kāi)电湘。',
      author:'黃羿 Yi Huang / 曾黎'
    }];

    //渲染數(shù)據(jù)并返回html.movies是我們定義的movies.ejs文件
  res.render('movies', { movies:movies });
});


module.exports = app;

訪問(wèn)http://localhost:3000/movies

1595753239175-5bfde17a-3bd1-4262-814f-290bc9f39b8c.png

res.render()函數(shù)也是支持回調(diào)的,這樣可以在模板引擎中渲染完成html后可以返回渲染的內(nèi)容

res.render('movies', { movies:movies },function(err,html){
    console.log(html)
  });
});

另外值得說(shuō)明的是ejs模塊也有ejs.render()和ejs.renderFile()方法,他在這里與res.render()作用類(lèi)似

ejs.render(str, data, options);
ejs.renderFile(filename, data, options, function(err, str){
   // str => 輸出繪制后的 HTML
});

四鹅经、ejs標(biāo)簽含義

  • <% '腳本' 標(biāo)簽寂呛,用于流程控制,無(wú)輸出瘾晃。
  • <%_ 刪除其前面的空格符
  • <%= 輸出數(shù)據(jù)到模板(輸出是轉(zhuǎn)義 HTML 標(biāo)簽)
  • <%- 輸出非轉(zhuǎn)義的數(shù)據(jù)到模板
  • <%# 注釋標(biāo)簽贷痪,不執(zhí)行、不輸出內(nèi)容
  • <%% 輸出字符串 '<%'
  • %> 一般結(jié)束標(biāo)簽
  • -%> 刪除緊隨其后的換行符
  • _%> 將結(jié)束標(biāo)簽后面的空格符刪除

更多使用方法瀏覽官方文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹦误,一起剝皮案震驚了整個(gè)濱河市劫拢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌强胰,老刑警劉巖尚镰,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異哪廓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)初烘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)涡真,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)分俯,“玉大人,你說(shuō)我怎么就攤上這事哆料「准簦” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵东亦,是天一觀的道長(zhǎng)杏节。 經(jīng)常有香客問(wèn)我,道長(zhǎng)典阵,這世上最難降的妖魔是什么奋渔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮壮啊,結(jié)果婚禮上嫉鲸,老公的妹妹穿的比我還像新娘。我一直安慰自己歹啼,他們只是感情好玄渗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著狸眼,像睡著了一般藤树。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拓萌,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天岁钓,我揣著相機(jī)與錄音,去河邊找鬼司志。 笑死甜紫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的骂远。 我是一名探鬼主播囚霸,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼激才!你這毒婦竟也來(lái)了拓型?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瘸恼,失蹤者是張志新(化名)和其女友劉穎劣挫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體东帅,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡压固,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了靠闭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帐我。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坎炼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拦键,到底是詐尸還是另有隱情谣光,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布芬为,位于F島的核電站萄金,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏媚朦。R本人自食惡果不足惜氧敢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望莲镣。 院中可真熱鬧福稳,春花似錦、人聲如沸瑞侮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)半火。三九已至越妈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钮糖,已是汗流浹背梅掠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留店归,地道東北人阎抒。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像消痛,于是被迫代替她去往敵國(guó)和親且叁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348