溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Node中的Express和路由模塊怎么使用

發(fā)布時(shí)間:2023-01-31 10:17:49 來(lái)源:億速云 閱讀:131 作者:iii 欄目:web開(kāi)發(fā)

今天小編給大家分享一下Node中的Express和路由模塊怎么使用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

Express

Express是基于Node.js平臺(tái),快速、開(kāi)放、極簡(jiǎn)的Web開(kāi)發(fā)框架。Express的作用和Node.js內(nèi)置的http模塊類似,是專門用來(lái)創(chuàng)建Web服務(wù)器Express的本質(zhì):就是一個(gè) npm 上的第三方包,提供了快速創(chuàng)建 Web 服務(wù)器的便捷方法。其中文網(wǎng)為:Express中文網(wǎng) 。當(dāng)然不使用Express使用內(nèi)置的http模塊也能創(chuàng)建Web服務(wù)器,但http模塊用起來(lái)及其復(fù)雜,開(kāi)發(fā)效率極低,Express是基于內(nèi)置的http模塊進(jìn)一步封裝出來(lái)的,能極大的提高開(kāi)發(fā)效率。

對(duì)于前端程序員來(lái)說(shuō),最常見(jiàn)的兩種服務(wù)器分別是:Web網(wǎng)站服務(wù)器(專門對(duì)外提供Web網(wǎng)頁(yè)資源的服務(wù)器);API接口服務(wù)器(專門對(duì)外提供的API接口服務(wù)器)。使用Express,可以方便快捷的創(chuàng)建Web網(wǎng)站服務(wù)器和API接口服務(wù)器。

Express的安裝與使用

在項(xiàng)目所處目錄中,終端運(yùn)行如下命令,即可將express安裝到項(xiàng)目中:(默認(rèn)最新版本)

npm install express

創(chuàng)建基本的服務(wù)器:與內(nèi)置http模塊常見(jiàn)的服務(wù)器比較 http內(nèi)置模塊書寫

// 導(dǎo)入 express 模塊
const express = require('express')
// 創(chuàng)建 web 服務(wù)器
const app = express()

// 調(diào)用 app.listen(端口號(hào),啟動(dòng)成功后的回調(diào)函數(shù)),啟動(dòng)服務(wù)器
app.listen(8081,()=>{
  console.log('express server running at http://127.0.0.1:8081');
})

監(jiān)聽(tīng)GET請(qǐng)求:通過(guò) app.get() 方法,可以監(jiān)聽(tīng)客戶端的 GET 請(qǐng)求,具體的語(yǔ)法格式如下:

// 參數(shù)1:客戶端請(qǐng)求的URL地址
// 參數(shù)2:請(qǐng)求對(duì)應(yīng)的處理函數(shù)
// req:請(qǐng)求對(duì)象(包含請(qǐng)求相關(guān)屬性和方法);res:響應(yīng)對(duì)象(包含響應(yīng)相關(guān)的屬性和方法)
app.get('請(qǐng)求的URL',function(req,res){/*處理函數(shù)*/})

監(jiān)聽(tīng)POST請(qǐng)求:通過(guò)app.post()方法,可以監(jiān)聽(tīng)客戶端的POST請(qǐng)求,具體的語(yǔ)法格式如下:

// 參數(shù)1:客戶端請(qǐng)求的URL地址
// 參數(shù)2:請(qǐng)求對(duì)應(yīng)的處理函數(shù). req:請(qǐng)求對(duì)象(包含請(qǐng)求相關(guān)屬性和方法);res:響應(yīng)對(duì)象(包含響應(yīng)相關(guān)的屬性和方法)
app.post('請(qǐng)求的URL',function(req,res){/*處理函數(shù)*/})

創(chuàng)建以get和post請(qǐng)求的Web服務(wù)器,創(chuàng)建成功,用Apifox接口測(cè)試工具進(jìn)行測(cè)試:

// 導(dǎo)入 express 模塊
const express = require('express')

// 創(chuàng)建 Web 服務(wù)器
const app = express()

// get請(qǐng)求
app.get('/user',(req,res)=>{
  // 向客戶端響應(yīng)一個(gè) json 對(duì)象
  res.send({name:'張三',age:18})
})

// post請(qǐng)求
app.post('/home',(req,res)=>{
  // 向客戶端響應(yīng)一個(gè) 文本字符串
  res.send('請(qǐng)求成功!')
}) 

app.listen(80,()=>{
  console.log('express server running at http://127.0.0.1:80');
})

Node中的Express和路由模塊怎么使用

Node中的Express和路由模塊怎么使用

獲取URL的查詢參數(shù):通過(guò)req.query對(duì)象,可以訪問(wèn)到客戶端通過(guò)查詢字符串的形式,發(fā)送給服務(wù)器的參數(shù):

app.get('/',(req,res)=>{
  // 通過(guò) req.query 可以獲取到客戶端發(fā)送過(guò)來(lái)的查詢參數(shù),默認(rèn)情況下,req.query 是一個(gè)空對(duì)象
  console.log(req.query);
  res.send(req.query)
})

Node中的Express和路由模塊怎么使用

Node中的Express和路由模塊怎么使用

獲取URL中的動(dòng)態(tài)參數(shù):通過(guò) req.params 對(duì)象,可以訪問(wèn)到 URL 中,通過(guò) : 匹配到的動(dòng)態(tài)參數(shù):

// 這里的id是一個(gè)動(dòng)態(tài)參數(shù)
app.get('/user/:id',(req,res)=>{
  // req.params 是動(dòng)態(tài)匹配到的 URL 參數(shù),默認(rèn)也是一個(gè)空對(duì)象
  console.log(req.params);
  res.send(req.params)
})

Node中的Express和路由模塊怎么使用

托管靜態(tài)資源

express提供了一個(gè)非常好用的函數(shù),叫做 express.static(),通過(guò)它我們可以很方便地創(chuàng)建一個(gè)靜態(tài)資源服務(wù)器,例如:通過(guò)以下代碼就可以將 test 目錄下的圖片、CSS文件、JS文件對(duì)外開(kāi)發(fā)使用了,我們可以通過(guò) http://127.0.0.1/index.htm 進(jìn)行訪問(wèn)。

如果想托管多個(gè)靜態(tài)資源目錄,多次調(diào)用 express.static() 函數(shù)即可。

app.use(express.static('test'))

Node中的Express和路由模塊怎么使用

注意:Express在指定的靜態(tài)目錄中查找文件,并對(duì)外提供資源的訪問(wèn)路徑,因此靜態(tài)資源的目錄名不會(huì)出現(xiàn)在URL中。 如果希望在托管靜態(tài)資源訪問(wèn)路徑之前,掛載路徑前綴,則可以使用如下方式:

// 在 express.static() 方法前面添加想要的路徑前綴
app.use('text',express.static('test'))

nodemon

在編寫調(diào)試Node.js項(xiàng)目時(shí),如果修改了項(xiàng)目代碼,則需要手動(dòng)頻繁的close掉,然后重新啟動(dòng)非常的繁瑣。我們可以使用 nodemon 這個(gè)工具,它能夠監(jiān)聽(tīng)項(xiàng)目文件的變動(dòng),當(dāng)代碼修改后,nodemon會(huì)自動(dòng)幫助我們重啟項(xiàng)目,極大地方便了開(kāi)發(fā)與測(cè)試。

在終端運(yùn)行如下命令,即可將 nodemon 安裝為全局可用的工具:

npm install nodemon -g

Node中的Express和路由模塊怎么使用

安裝完成之后,將之前的命令 node+文件名稱 換成 nodemon+文件名稱 即可自動(dòng)重啟項(xiàng)目進(jìn)行監(jiān)聽(tīng),如下:

Node中的Express和路由模塊怎么使用

Express路由

在Express中,路由指的是客戶端的請(qǐng)求與服務(wù)器之間的映射關(guān)系。Express中的路由分三部分組成:請(qǐng)求的類型、請(qǐng)求的URL地址、處理函數(shù)。

每當(dāng)一個(gè)請(qǐng)求到達(dá)服務(wù)器之后,需要先經(jīng)過(guò)路由的匹配,只有匹配成功之后,才會(huì)調(diào)用對(duì)應(yīng)的處理函數(shù)。在匹配時(shí),會(huì)按照路由的順序進(jìn)行匹配,如果請(qǐng)求類型和請(qǐng)求的URL同時(shí)匹配成功,則Express會(huì)將這次請(qǐng)求轉(zhuǎn)交到對(duì)應(yīng)的function函數(shù)進(jìn)行處理。

Node中的Express和路由模塊怎么使用

// 導(dǎo)入 express 模塊
const express = require('express')
// 創(chuàng)建 Web 服務(wù)器
const app = express()
// 掛載路由
app.get('/',(req,res)=>{ res.send('hello world'); })
app.post('/',(req,res)=>{ res.send('hello ok'); })

// 監(jiān)聽(tīng)服務(wù)
app.listen(80,()=>{
  console.log('express server running at http://127.0.0.1');
})

模塊化路由

為了方便對(duì)路由進(jìn)行模塊化管理,Express不建議將路由直接掛載到app上,而是推薦將路由抽離為單獨(dú)的模塊。

創(chuàng)建路由模塊:

// 導(dǎo)入 express 模塊
const express = require('express')
// 創(chuàng)建 Web 服務(wù)器
const app = express()
// 掛載路由
app.get('/',(req,res)=>{ res.send('hello world'); })
app.post('/',(req,res)=>{ res.send('hello ok'); })

// 監(jiān)聽(tīng)服務(wù)
app.listen(80,()=>{
  console.log('express server running at http://127.0.0.1');
})

注冊(cè)路由模塊:

// 導(dǎo)入 express 模塊
const express = require('express')
// 創(chuàng)建 服務(wù)器
const app = express()

// 導(dǎo)入路由模塊
const router = require('./router')
// 注冊(cè)路由模塊
app.use(router)

// 監(jiān)聽(tīng)服務(wù)
app.listen(80,()=>{
  console.log('express server running at http://127.0.0.1');
})

Node中的Express和路由模塊怎么使用

如果想為路由模塊添加前綴,方式也很簡(jiǎn)單,如下:(即可全局模塊路徑前有該前綴)

Node中的Express和路由模塊怎么使用

Node中的Express和路由模塊怎么使用

以上就是“Node中的Express和路由模塊怎么使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI