您好,登錄后才能下訂單哦!
本篇內容主要講解“Node.js中Express框架怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Node.js中Express框架怎么用”吧!
很多語言都有一些框架,這些框架可以幫助我們更加快捷地開發以及維護項目,像 JS 就有 Vue、React、Angular 等流行框架;而 Node.js 也不例外,它也有一些框架可以幫助我們開發 Node.js 項目。
目前比較流行的 Node.js 框架有 Express
、Koa
和 Egg.js
,無論是哪個 Node.js 框架,都是基于中間件來實現的,而中間件的執行方式就需要依據洋蔥模型。
抽象一點解釋,就是從洋蔥中心點穿過去,就必須先一層層向內穿入洋蔥表皮進入中心點,然后再從中心點一層層向外穿出表皮,這里有個特點:進入時穿入了多少層表皮,出去時就必須穿出多少層表皮。先穿入表皮,后穿出表皮,這種結構是符合棧結構先進后出的原則的。
在 Node.js 框架中,洋蔥的表皮我們可以定義為中間件:
從外向內進入中心點的過程是一個關鍵詞 next()
;
而從內向外則是每個中間件執行完畢后,進入下一層中間件,一直到最后一層。
下面來簡單了解一些 Express 框架吧!
Express
是 Node.js 中 HTTP 服務的一個框架,而要了解一個框架,最好的方法是
去了解它的關鍵功能
推導出它要解決的問題是什么
那要了解它的關鍵功能,我們可以去 Express 的網站 查看它的 Features
,這些核心功能都是為了讓我們更加方便、簡潔地寫出 HTTP 服務,從而大大減輕我們的開發負擔,讓我們快速上手開發。
一些 Features
:
路由:將對應路由分開作為模塊處理
request
/response
屬性的簡化,讓我們不需要經過轉換,然后直接使用對應的屬性。
request
:pathname
、query
等
response
:send()
、json()
、jsonp()
等
中間件(next()
)
更好地組織流程代碼
異步會打破 Express
的洋蔥模型
現在通過使用 Express 框架來改造石頭剪刀布游戲,game.js
游戲模塊和 index.html
頁面的代碼沒有變動,可以去 github 上面 clone
。
index.js
Express 改造,需要先用 npm
安裝 express
:npm 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框架怎么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。