中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node.js中Express框架指的是什么

發布時間:2021-06-15 10:34:14 來源:億速云 閱讀:271 作者:小新 欄目:web開發

這篇文章主要介紹Node.js中Express框架指的是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

很多語言都有一些框架,這些框架可以幫助我們更加快捷地開發以及維護項目,像 JS 就有 Vue、React、Angular 等流行框架;而 Node.js 也不例外,它也有一些框架可以幫助我們開發 Node.js 項目。

目前比較流行的 Node.js 框架有 ExpressKoaEgg.js,無論是哪個 Node.js 框架,都是基于中間件來實現的,而中間件的執行方式就需要依據洋蔥模型。

洋蔥模型

抽象一點解釋,就是從洋蔥中心點穿過去,就必須先一層層向內穿入洋蔥表皮進入中心點,然后再從中心點一層層向外穿出表皮,這里有個特點:進入時穿入了多少層表皮,出去時就必須穿出多少層表皮。先穿入表皮,后穿出表皮,這種結構是符合棧結構先進后出的原則的。

在 Node.js 框架中,洋蔥的表皮我們可以定義為中間件

  • 從外向內進入中心點的過程是一個關鍵詞 next()

  • 而從內向外則是每個中間件執行完畢后,進入下一層中間件,一直到最后一層。

下面來簡單了解一些 Express 框架吧!

Express

Express 是 Node.js 中 HTTP 服務的一個框架,而要了解一個框架,最好的方法是

  • 去了解它的關鍵功能

  • 推導出它要解決的問題是什么

那要了解它的關鍵功能,我們可以去 Express 的網站 查看它的 Features,這些核心功能都是為了讓我們更加方便、簡潔地寫出 HTTP 服務,從而大大減輕我們的開發負擔,讓我們快速上手開發。

Node.js中Express框架指的是什么

一些 Features

  • 路由:將對應路由分開作為模塊處理

  • request/response 屬性的簡化,讓我們不需要經過轉換,然后直接使用對應的屬性。

    • requestpathnamequery

    • responsesend()json()jsonp()

  • 中間件(next()

    • 更好地組織流程代碼

    • 異步會打破 Express 的洋蔥模型

Express 改造石頭剪刀布游戲

現在通過使用 Express 框架來改造石頭剪刀布游戲,game.js 游戲模塊和 index.html 頁面的代碼沒有變動,可以去 github 上面 clone

index.js Express 改造,需要先用 npm 安裝 expressnpm i express

const fs = require('fs');
const express = require('express');

const game = require('./game');
let playerWon = 0; // 贏的次數

const app = express();

// 路由功能,將對應路由功能分開作為模塊處理,到時候也可以放到其它文件去
// 通過 app.get 設定 /favicon.ico 路徑的路由
// .get 代表請求 method 是 get,所以這里可以用 post、delete 等。這個能力很適合用于創建 rest 服務
app.get('/favicon.ico', function (request, response) {
  // 一句 status(200) 即可代替 writeHead(200); end();
  // response.writeHead(200);
  // response.end();
  response.status(200);
  return;
})
// 打開頁面 index.html
app.get('/', function (request, response) {
  // fs.createReadStream(__dirname + '/index.html').pipe(response);
  // send接口會判斷你傳入的值的類型,文本的話則會處理為text/html
  // Buffer的話則會處理為下載,html文件需要加上 `utf-8`
  response.send(fs.readFileSync(__dirname + '/index.html', 'utf-8'))
})

// next()同步狀態下沒有問題的,但是一旦有了異步,洋蔥模型就打破了
app.get('/game',
  function (request, response, next) {
    if (playerWon >= 3) {
      response.status(500);
      response.send('我不會再玩了!');
      return;
    }
    // 通過next執行后續中間件
    next();
    // 當后續中間件執行完之后,會執行到這個位置
    if (response.playerWon) {
      playerWon++;
    }
  },
  // 獲取玩家的操作
  function (request, response, next) {
    // Express 中對 request 做了一些處理,可以直接拿到 query 參數
    // const query = querystring.parse(parsedUrl.query);
    // const playerAction = query.action;
    const query = request.query;
    const playerAction = query.action;
    response.playerAction = playerAction;
    // 通過next執行后續中間件
    next();
  },
  function (request, response) {
    // 通過 response 去掛載一些參數
    let playerAction = response.playerAction;
    // 執行游戲邏輯
    const gameRes = game(playerAction);
    // 先返回頭部
    // response.writeHead(200);
    response.status(200);
    // 根據不同的游戲結果返回不同的說明
    if (gameRes == 0) {
      // response.end('平局!');
      response.send('平局!');
    } else if (gameRes == 1) {
      response.send('你贏了!');
      // 玩家勝利次數統計+1
      // playerWon++;
      response.playerWon = true;
    } else {
      response.send('你輸了!');
    }
  }
)
app.listen(3000);

以上是“Node.js中Express框架指的是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

京山县| 昌宁县| 桦川县| 沙坪坝区| 石台县| 佛山市| 津市市| 五华县| 定南县| 吉木萨尔县| 林州市| 康定县| 罗甸县| 澄城县| 诸暨市| 兴山县| 林州市| 界首市| 北流市| 神农架林区| 灵山县| 桦南县| 阿荣旗| 涞水县| 德江县| 政和县| 故城县| 中山市| 桦川县| 枝江市| 瑞金市| 乌鲁木齐市| 阿拉尔市| 霍邱县| 乐至县| 东乌珠穆沁旗| 闸北区| 甘洛县| 澎湖县| 富裕县| 临颍县|