最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2023年05月15日 09:37:45   作者:Teacher_Tian_2019  
這篇文章主要介紹了express框架通過(guò)ejs模板渲染輸出頁(yè)面的方法,結(jié)合實(shí)例形式分析了express框架使用ejs模版引擎渲染輸出的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下

1、前言

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

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

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

router.get('/', function(req, res, next) {
    res.send('<div>2004年高考成績(jī)查詢(xún)(張三)</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>')
});

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

  1. 它的內(nèi)容是以html標(biāo)簽為基礎(chǔ)的,只不過(guò)加入了一些占位符(如${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)行說(shuō)明,應(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ī)查詢(xún)(張三)</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文件,通過(guò)模板輸出響應(yīng)內(nèi)容

  注意,我說(shuō)的router文件,就是上篇文章中說(shuō)的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
            }
        ]
    };
    //通過(guò)模板和數(shù)據(jù)渲染頁(yè)面
    res.render('score', data);
});

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

  預(yù)期的結(jié)果如下,你搞成功了嗎?
在這里插入圖片描述

5、補(bǔ)充說(shuō)明

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

npx express-generator --view ejs

嗎?它為我們做了多工作,具體表現(xiàn)在以下方面(看圖):
在這里插入圖片描述
  這兩句分別為我們指定了模板文件存放的路徑,和指定ejs為模板引擎。

6、寫(xiě)在最后

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

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

筆者在測(cè)試express框架的時(shí)候遇到的ejs顯示源碼的問(wèn)題,檢查之后才發(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即可。

相關(guān)文章

  • 淺談node.js 命令行工具(cli)

    淺談node.js 命令行工具(cli)

    nodejs開(kāi)發(fā)命令行工具,流程相對(duì)簡(jiǎn)單,但一套完整的命令行程序開(kāi)發(fā)流程下來(lái),還是需要下點(diǎn)功夫,這篇文章主要介紹了淺談node.js 命令行工具(cli),感興趣的小伙伴們可以參考一下
    2018-05-05
  • npm?install安裝失敗常見(jiàn)問(wèn)題的解決辦法小結(jié)

    npm?install安裝失敗常見(jiàn)問(wèn)題的解決辦法小結(jié)

    有時(shí)候前端安裝npm install 安裝包總是安裝不上,下面這篇文章主要給大家介紹了關(guān)于npm?install安裝失敗常見(jiàn)問(wèn)題的解決辦法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 提高NodeJS中SSL服務(wù)的性能

    提高NodeJS中SSL服務(wù)的性能

    盡管OpenSSL露出驚天漏洞,但是基于SSL的加密協(xié)議還是應(yīng)用得最廣泛的,這只是OpenSSL這個(gè)開(kāi)源軟件本身的問(wèn)題(詳情: OpenSSL是坑貨寫(xiě)的),下面這篇文章提供了一些如何在NodeJS中,提高HTTPS性能方面的技巧
    2014-07-07
  • nodeJs爬蟲(chóng)的技術(shù)點(diǎn)總結(jié)

    nodeJs爬蟲(chóng)的技術(shù)點(diǎn)總結(jié)

    本篇文章給大家總結(jié)了關(guān)于nodeJs爬蟲(chóng)的技術(shù)點(diǎn)的相關(guān)知識(shí),對(duì)爬蟲(chóng)有興趣的朋友可以跟著學(xué)習(xí)參考下。
    2018-05-05
  • nodejs入門(mén)教程六:express模塊用法示例

    nodejs入門(mén)教程六:express模塊用法示例

    這篇文章主要介紹了nodejs入門(mén)教程之express模塊用法,結(jié)合實(shí)例形式分析了express模塊的功能、創(chuàng)建、路由相關(guān)使用技巧,需要的朋友可以參考下
    2017-04-04
  • nodejs 最新版安裝npm 的使用詳解

    nodejs 最新版安裝npm 的使用詳解

    本篇文章主要介紹了nodejs 最新版安裝npm 的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • NodeJs Express框架實(shí)現(xiàn)服務(wù)器接口詳解

    NodeJs Express框架實(shí)現(xiàn)服務(wù)器接口詳解

    最近學(xué)習(xí)了基于前后端分離的開(kāi)發(fā)模式,我前端使用Vue框架,后端使用nodejs開(kāi)發(fā)API接口,下面這篇文章主要給大家介紹了關(guān)于nodejs使用Express框架寫(xiě)后端接口的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Nodejs使用exceljs實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出

    Nodejs使用exceljs實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出

    在日常開(kāi)發(fā)中,我們常需在后臺(tái)管理系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入與導(dǎo)出功能,以便與?Excel?文件進(jìn)行交互,本文將使用使用exceljs實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能,需要的可以參考下
    2024-03-03
  • nvm如何查看node版本

    nvm如何查看node版本

    文章介紹了如何使用nvm查看Node.js版本,并解決了由于舊淘寶鏡像廢棄導(dǎo)致的命令無(wú)效問(wèn)題,解決方法是在nvm的setting文件中添加特定代碼
    2024-12-12
  • Node?文件查找優(yōu)先級(jí)及?Require?方法文件查找策略

    Node?文件查找優(yōu)先級(jí)及?Require?方法文件查找策略

    這篇文章主要介紹了Node文件查找優(yōu)先級(jí)及Require方法文件查找策略。文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09

最新評(píng)論

兴义市| 铅山县| 桓台县| 昆明市| 汝州市| 南城县| 清涧县| 肃南| 出国| 汝南县| 类乌齐县| 昌乐县| 会昌县| 抚顺市| 定襄县| 西林县| 阜南县| 乌拉特后旗| 富裕县| 永平县| 江西省| 沐川县| 临沭县| 确山县| 吉木乃县| 兴义市| 当阳市| 汉川市| 尉犁县| 安平县| 启东市| 绥宁县| 云安县| 淮北市| 霍城县| 托克托县| 镇远县| 岳阳县| 嘉义县| 眉山市| 丰台区|