日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Express新建工程以及新建路由规则、匹配路由规则、控制权转移

發(fā)布時(shí)間:2025/3/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Express新建工程以及新建路由规则、匹配路由规则、控制权转移 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

場(chǎng)景

npm提供了大量的第三方模塊,其中不乏許多Web框架,我們沒(méi)有必要重復(fù)發(fā)明輪子,
因而選擇使用Express作為開(kāi)發(fā)框架,因?yàn)樗悄壳白罘€(wěn)定、使用最廣泛,而且Node.js官
方推薦的唯一一個(gè)Web開(kāi)發(fā)框架。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號(hào)
霸道的程序猿
獲取編程相關(guān)電子書(shū)、教程推送與免費(fèi)下載。

實(shí)現(xiàn)

安裝Express

首先需要安裝Express

npm install -g express

?

這里使用全局安裝-g,然后還需要安裝express-generator

npm install -g express-generator

?

然后可以通過(guò)

express --help

來(lái)查看相關(guān)幫助

?

新建Express工程

express -t ejs microblog

?

Express在初始化一個(gè)項(xiàng)目的時(shí)候需要指定模板引擎,默認(rèn)支持Jade和ejs,這里使用ejs,同時(shí)暫時(shí)不添加CSS引擎和會(huì)話支持。

后面microblog是項(xiàng)目名,此時(shí)會(huì)生成此目錄以及目錄下文件

并且會(huì)提示我們進(jìn)入其中并執(zhí)行npm install

cd microblog npm install

?

安裝依賴成功。

啟動(dòng)服務(wù)器

打開(kāi)項(xiàng)目下的app.js,發(fā)現(xiàn)并沒(méi)有服務(wù)器的端口監(jiān)聽(tīng),加上如下代碼

app.listen(3000,function () {console.log('服務(wù)端啟動(dòng)在3000端口') })

然后啟動(dòng)服務(wù)器

node app.js

打開(kāi)瀏覽器訪問(wèn)localhost:3000

?

新建路由規(guī)則

新建成的工程是自帶一個(gè)users示例路由

?

所以直接訪問(wèn)

http://localhost:3000/users

?

就能直接訪問(wèn)到routes下的users.js中的響應(yīng)內(nèi)容

?

仿照示例路由首先在app.js,添加路由匹配

app.use('/badao', badaoRouter);

badaoRouter在上面聲明

var badaoRouter = require('./routes/badao');

然后在routes目錄下新建badao.js

var express = require('express'); var router = express.Router();/* GET users listing. */ router.get('/', function(req, res, next) {res.send('這是來(lái)自badao--公眾號(hào):霸道的程序猿'); });module.exports = router;

然后重啟服務(wù)器,訪問(wèn)

http://localhost:3000/badao

?

路由規(guī)則匹配

有時(shí)需要根據(jù)傳遞的參數(shù)進(jìn)行路由的匹配,比如傳遞名字,從而返回Hello+傳遞的名字參數(shù)。

在app.js中引入index根路由的方式是

app.use('/', indexRouter);

然后indexRouter是通過(guò)

var indexRouter = require('./routes/index');

在routes下index.js中

var express = require('express'); var router = express.Router();/* GET home page. */ router.get('/', function(req, res, next) {res.render('index', { title: 'Express' }); });router.get('/hello',function (req,res) {res.send('cunrrentTime is :'+new Date().toString()) });router.get('/hello/:username',function (req,res) {res.send('Hello:'+req.params.username); });module.exports = router;

又新增了兩個(gè)路由這樣,就可以通過(guò)app.js的路由加上此index.js中的路由進(jìn)行匹配。

比如這里的訪問(wèn)hello這個(gè)路由對(duì)應(yīng)的方法

運(yùn)行程序打開(kāi)瀏覽器輸入

http://localhost:3000/hello

?

除此之外還可以獲取路由傳遞的參數(shù)進(jìn)行動(dòng)態(tài)顯示

router.get('/hello/:username',function (req,res) {res.send('Hello:'+req.params.username); });

使用:username來(lái)接受路由參數(shù),進(jìn)入響應(yīng)Hello+參數(shù)。

啟動(dòng)程序,然后在瀏覽器中輸入:

http://localhost:3000/hello/霸道的程序猿

?

控制權(quán)轉(zhuǎn)移

Express支持同一路徑綁定多個(gè)路由響應(yīng)函數(shù)。但是當(dāng)你訪問(wèn)這兩條同樣的規(guī)則匹配到的路徑時(shí),會(huì)發(fā)現(xiàn)請(qǐng)求總是

被前一條路由規(guī)則捕獲,后面的規(guī)則會(huì)被忽略。原因是Express在處理路由規(guī)則時(shí),會(huì)優(yōu)先匹配先定義的路由規(guī)則,

因此后面的規(guī)則被屏蔽。

Express提供了路由控制權(quán)轉(zhuǎn)移的方法,即回調(diào)函數(shù)的第三個(gè)參數(shù)next,通過(guò)調(diào)用next()將路由控制權(quán)交給后面的規(guī)則。

這讓我們可以實(shí)現(xiàn)中間件,而且還能提高代碼的復(fù)用程度。

例如針對(duì)用戶查詢信息和修改信息的操作,其中一個(gè)步驟是檢查用戶名是否存在,因此可以通過(guò)next()方法實(shí)現(xiàn)。

繼續(xù)使用上面的獲取路由參數(shù)的方式,在上面新增的路由badao.js中聲明一個(gè)對(duì)象和設(shè)置屬性值

var users = {'badao':{name:'badao',blog:'https://blog.csdn.net/BADAO_LIUMANG_QIZHI'} }

然后新增兩個(gè)同路徑匹配的路由

router.all('/:username',function (req,res,next) {if(users[req.params.username]){next();}else{next(new Error(req.params.username+'不存在'))} }); router.get('/:username',function (req,res) {res.send(JSON.stringify(users[req.params.username])); });

上面兩個(gè)路由首先走第一個(gè)驗(yàn)證傳遞的username參數(shù)是否存在,不存在則返回錯(cuò)誤,提示則調(diào)用next進(jìn)而將對(duì)象信息返回。

badao.js完整代碼

var express = require('express'); var router = express.Router(); var users = {'badao':{name:'badao',blog:'https://blog.csdn.net/BADAO_LIUMANG_QIZHI'} } /* GET users listing. */ router.get('/', function(req, res, next) {res.send('這是來(lái)自badao--公眾號(hào):霸道的程序猿'); });router.all('/:username',function (req,res,next) {if(users[req.params.username]){next();}else{next(new Error(req.params.username+'不存在'))} }); router.get('/:username',function (req,res) {res.send(JSON.stringify(users[req.params.username])); });module.exports = router;

然后重新運(yùn)行項(xiàng)目,打卡瀏覽器輸入

http://localhost:3000/badao/bada

?

然后輸入正確的名字參數(shù)

http://localhost:3000/badao/badao

?

示例代碼下載

https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/12969105

總結(jié)

以上是生活随笔為你收集整理的Express新建工程以及新建路由规则、匹配路由规则、控制权转移的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91人妻一区二区三区 | 粉嫩av一区二区三区 | 免费无遮挡无码永久在线观看视频 | 久草精品国产 | 欧美极品在线视频 | 亚洲手机在线 | 国产午夜一区二区 | 国产女人视频 | 久久精品国产熟女亚洲AV麻豆 | av福利在线| 欧美一区二区三区免费在线观看 | 国产一区二区三区在线免费观看 | 岛国一区 | 欧美xxxx吸乳 | 各种含道具高h调教1v1男男 | 国产91精品一区二区麻豆亚洲 | 成人一区二区av | 中文字幕久久久久久久 | 四虎永久免费影院 | 国产成人自拍在线 | 无码日韩人妻精品久久蜜桃 | 人人妻人人藻人人爽欧美一区 | 夜夜操导航 | 最新国产毛片 | 超碰人人草人人干 | 男女爱爱福利视频 | 15—16女人毛片| 亚洲三级大片 | 久草不卡 | 九九热这里都是精品 | 国产精品传媒在线 | 日韩av网址大全 | 少妇2做爰bd在线意大利堕落 | 91精品久久久久久 | 另类视频在线观看+1080p | 日韩男人的天堂 | 亚洲大胆视频 | 韩国三级hd中文字幕有哪些 | 国产精品7777 | 免费在线观看黄视频 | 日本成人一二三区 | 婷婷在线网 | 日韩在线视频免费看 | 欧美操穴视频 | 五月婷在线视频 | 粗大的内捧猛烈进出视频 | 国产精品88久久久久久妇女 | 欧美日韩片 | 精品久久久久久无码国产 | 黄色a一片 | 亚洲一区小说 | 亚洲天堂一区在线 | 香蕉狠狠爱视频 | 午夜不卡久久精品无码免费 | 欧美一区二区三区免费视频 | 亚洲理论片在线观看 | 娇妻玩4p被三个男人伺候电影 | 国产午夜在线观看 | 99欧美| 中文字幕+乱码+中文字幕一区 | 少妇人妻好深好紧精品无码 | 50一60岁老妇女毛片 | 色天使在线视频 | 日韩一级性 | 丝袜在线一区 | 色哟哟无码精品一区二区三区 | 欧美一区二区久久久 | 理想之城连续剧40集免费播放 | 国产伦视频| 国产aⅴ爽av久久久久成人 | 寡妇av| 182tv午夜 | 日韩av在线天堂 | 少妇大叫太粗太大爽一区二区 | 久久乐视频 | 久久99精品久久久久 | 无码一区二区三区免费视频 | 亚洲xx网站 | 成人激情小视频 | 91尤物在线 | 黄色av网址在线 | 夜夜操夜夜爱 | 免费激情av | 欧美13p | 亚洲精品视频导航 | 俄罗斯色片 | 99久久久无码国产精品性 | 99免费| 日韩不卡免费 | 天天操天天操天天干 | 亚洲自拍小视频 | 大奶骚 | 波多野结衣在线视频播放 | 欧美日韩在线观看一区二区三区 | 成年人看的视频网站 | www.日韩视频 | 日韩精品视频中文字幕 | 欧美日韩激情视频在线观看 | 国产一级视频在线观看 |