国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

express框架通過ejs模板渲染輸出頁(yè)面實(shí)例分析

瀏覽:27日期:2022-06-09 15:29:24

1、前言

  上一節(jié)的get請(qǐng)求中,處理函數(shù)通過res.send返回了一段html代碼,這讓我們很興奮。我們終于可以給用戶返回html頁(yè)面了。
  當(dāng)時(shí)例子是這么寫的,只要在send中傳入一些html格式的字符串即可。

// get routerrouter.get("/", function(req, res, next) {    res.send("<p>這是get請(qǐng)求/system返回的資源</p>")});

  那我問個(gè)問題,如果我想返回給用戶的是一張學(xué)生的成績(jī)信息怎么辦?其實(shí)可以這樣寫:

router.get("/", function(req, res, next) {    res.send("<div>2004年高考成績(jī)查詢(張三)</div><table><tr><td>1</td><td>語(yǔ)文</td><td>135</td></tr><tr><td>2</td><td>數(shù)學(xué)</td><td>131</td></tr><tr><td>3</td><td>英語(yǔ)</td><td>96</td></tr><tr><td>4</td><td>理科綜合</td><td>243</td></tr></table>")});

  這樣也是沒啥毛病吧!但最大的問題來(lái)了,一般情況數(shù)據(jù)都是動(dòng)態(tài)的從數(shù)據(jù)庫(kù)獲取或計(jì)算得來(lái)的,在輸出到頁(yè)面時(shí)字符串的拼接需要通過字符串(如html標(biāo)簽)和變量組成的。但這樣的拼接工作相當(dāng)?shù)馁M(fèi)勁而且容易出錯(cuò),出錯(cuò)后有時(shí)候也不容易排查。
  繞了這么久,終于可以引出本文的主題了——ejs模板。目前,我先只能這么給大家解釋ejs模板是個(gè)什么東東吧:

  1. 它的內(nèi)容是以html標(biāo)簽為基礎(chǔ)的,只不過加入了一些占位符(如${name})、簡(jiǎn)單ejs邏輯(如<% if(…) { %> 等)
  2. 它的后綴名可以定義為.html,但初期請(qǐng)各位記住它的文件后綴名就是.ejs吧
  3. 簡(jiǎn)單的json數(shù)據(jù) 和 ejs模板文件,在res.render方法執(zhí)行后,就能將數(shù)據(jù)套入到模板中,完成動(dòng)態(tài)網(wǎng)頁(yè)的輸出。

  文字描述內(nèi)容就到這里,后邊的小節(jié)基本上是以代碼+代碼注釋進(jìn)行說明,應(yīng)該是更加容易理解了。

2、創(chuàng)建ejs模板文件

  在views目錄下創(chuàng)建文件,命名為score.ejs,代碼如下:

<!DOCTYPE html><html>  <head>    <title>成績(jī)單</title>    <link rel="stylesheet" href="/stylesheets/style.css" />  </head>  <body>    <div><%= year %>年高考成績(jī)查詢(張三)</div>    <table><% scores.forEach(function(item,index){ %>    <tr><td><%= index %></td><td><%=item.course %></td><td><%=item.score %></td></tr><% }); %>    </table>  </body></html>

3、修改router文件,通過模板輸出響應(yīng)內(nèi)容

  注意,我說的router文件,就是上篇文章中說的system.js哈。找到router.get部分,修改之前是這樣的:

router.get("/", function(req, res, next) {    res.send("<p>這是get請(qǐng)求/system返回的資源</p>")});

修改之后是:

router.get("/", function(req, res, next) {    //準(zhǔn)備好的數(shù)據(jù),真實(shí)的情形是從數(shù)據(jù)庫(kù)中得來(lái)的    var data = {year:2004,scores:[    {course:"語(yǔ)文",score: 135    },    {course:"數(shù)學(xué)",score:131    },    {course:"英語(yǔ)",score:96    },    {course:"理科綜合",score:243    }]    };    //通過模板和數(shù)據(jù)渲染頁(yè)面    res.render("score", data);});

4、就這么簡(jiǎn)單,啟動(dòng)服務(wù),驗(yàn)證

  預(yù)期的結(jié)果如下,你搞成功了嗎?

5、補(bǔ)充說明

  是不是覺得成功來(lái)得很容易?
  其實(shí)不然,你的成功來(lái)自于最初你使用了express-generator腳手架,還記得我在快速搭建Express開發(fā)系統(tǒng) 提到的命令:

npx express-generator --view ejs

嗎?它為我們做了多工作,具體表現(xiàn)在以下方面(看圖):

  這兩句分別為我們指定了模板文件存放的路徑,和指定ejs為模板引擎。

6、寫在最后

  其實(shí)ejs模板文件中的語(yǔ)法是非常復(fù)雜的,例如條件、循環(huán)、html富文本輸出……等,建議需要深入研究的同學(xué)可以通過這個(gè)鏈接去了解一下。
  在下一篇文章中,我會(huì)將本節(jié)的表格美化一下,加上一些bootstrap樣式。因?yàn)槲以谧畛跚昂蠖送瑫r(shí)開發(fā)時(shí),也遇到過一些小問題,所以我想是值得一講的。ok,就到這里,期待下次見。

補(bǔ)充:express.render渲染ejs顯示源碼的問題解決方法

筆者在測(cè)試express框架的時(shí)候遇到的ejs顯示源碼的問題,檢查之后才發(fā)現(xiàn)在設(shè)置response的head的時(shí)候,在app.all('*', function(req, res, next)中加了一句res.header("Content-Type", "application/json;charset=utf-8");,將其注釋掉,重啟nodejs服務(wù)器,輸入路由后在瀏覽器按快捷鍵Ctrl+F5即可。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 亚洲成人免费网址 | 久久只有这才是精品99 | 久久久久久综合成人精品 | 美女视频黄色在线观看 | 成人国产精品一级毛片天堂 | 国产伦理自拍 | baby在线观看免费观看 | 国产精品99久久久久久人 | 亚洲精品久久精品h成人 | 日美三级 | 中国一级特黄剌激爽毛片 | 久久香蕉国产精品一区二区三 | 日韩亚洲一区中文字幕 | 美女视频免费永久观看的 | 国产一二三区在线 | 亚洲视频自拍 | 国产激情一区二区三区成人91 | 国产精品一区久久 | 狠狠色丁香婷婷综合 | 国产高清在线精品一区二区 | 国内精品一区二区三区最新 | 欧美精品一区二区在线观看播放 | 欧美色网在线 | 国产精品青草久久久久福利99 | 青青爽国产手机在线观看免费 | 一级做a爰片久久毛片美女 一级做a爰片久久毛片免费看 | 怡红院亚洲 | 国产美女啪| 香蕉国产人午夜视频在线观看 | 久久久久国产成人精品 | 精品久久久久久久久久中文字幕 | 香蕉久久高清国产精品免费 | 中文在线免费视频 | 国产成人精品久久亚洲高清不卡 | 午夜人成 | www.夜色.com | 亚洲m男在线中文字幕 | 国产成人精品一区二区 | 欧美日产国产亚洲综合图区一 | 久久极品视频 | 国产精品久久久久久搜索 |