更新時間:2023-10-24 來源:黑馬程序員 瀏覽量:
Express是基于Node.js平臺,快速、開放、極簡的 Web 開發(fā)框架。通俗的理解:Express的作用和Node.js內(nèi)置的http模塊類似,是專門用來創(chuàng)建 Web 服務(wù)器的。本質(zhì)就是一個 npm 上的第三方包,提供了快速創(chuàng)建 Web 服務(wù)器的便捷方法。
不使用Express,使用Node.js提供的原生http模塊也能創(chuàng)建Web服務(wù)器,http 內(nèi)置模塊用起來很復(fù)雜,開發(fā)效率低;Express
是基于內(nèi)置的 http 模塊進(jìn)一步封裝出來的,能夠極大的提高開發(fā)效率。http內(nèi)置模塊和Express類似于瀏覽器中 Web API 和 jQuery
的關(guān)系。后者是基于前者進(jìn)一步封裝出來的。
對于前端程序員來說,最常見的兩種服務(wù)器,分別是:
Web 網(wǎng)站服務(wù)器:專門對外提供 Web 網(wǎng)頁資源的服務(wù)器。
API 接口服務(wù)器:專門對外提供 API 接口的服務(wù)器。
使用 Express,我們可以方便、快速的創(chuàng)建 Web 網(wǎng)站的服務(wù)器或 API 接口的服務(wù)器。
在項(xiàng)目所處的目錄中,運(yùn)行如下的終端命令,即可將 express 安裝到項(xiàng)目中使用:
npm i express@4.17.1
創(chuàng)建基本的 Web 服務(wù)器,具體語法格式如下:
// 1.導(dǎo)入 express const express = require('express') // 2.創(chuàng)建 web 服務(wù)器 const app = express() //3.調(diào)用 app.listen(端口號,啟動成功后的回調(diào)函數(shù)),啟動服務(wù)器 app.listen(80, () => { console.log('express server running at http://127.0.0.1') })
通過 app.get() 方法,可以監(jiān)聽客戶端的 GET 請求,具體的語法格式如下:
//參數(shù)1:客戶端請求的 URL地址 //參數(shù)2:請求對應(yīng)的處理函數(shù) // req:請求對象(包含了與請求相關(guān)的屬性與方法) // res:響應(yīng)對象(包含了與響應(yīng)相關(guān)的屬性與方法) app.get('請求URL',function(req,res){/*處理函數(shù)*/})
通過 app.post() 方法,可以監(jiān)聽客戶端的 POST 請求,具體的語法格式如下:
//參數(shù)1:客戶端請求的URL地址 //參數(shù)2:請求對應(yīng)的處理函數(shù) // req:請求對象(包含了與請求相關(guān)的屬性與方法) // res:響應(yīng)對象(包含了與響應(yīng)相關(guān)的屬性與方法) app.post('請求URL',function(req,res){/*處理函數(shù)*/})
通過 res.send() 方法,可以把處理好的內(nèi)容,發(fā)送給客戶端:
app.get('/user', (req, res) => { // 向客戶端發(fā)送 JSON 對象 res.send({name:'zs',age:20,gender:'男'}) }) app.post('/user') (req, res) => { //向客戶端發(fā)送文本內(nèi)容 res.send('請求成功') })
通過 req.query 對象,可以訪問到客戶端通過查詢字符串的形式,發(fā)送到服務(wù)器的參數(shù):
app.get('/', (req, res) => { // req.query 默認(rèn)是一個空對象 // 客戶端使用??name=zs&age=20 這種查詢字符串形式,發(fā)送到服務(wù)器的參數(shù), // 可以通過 req.query 對象訪問到,例如: // req.query.name req.query.age console.log(req.query) })
通過 req.params 對象,可以訪問到 URL 中,通過 : 匹配到的動態(tài)參數(shù):
//URL地址中,可以通過:參數(shù)名的形式,匹配動態(tài)參數(shù)值 app.get('/user/:id', (req, res) => { // req.params默認(rèn)是一個空對象 // 里面存放著通過:動態(tài)匹配到的參數(shù)值 console.log(req.params) })