日韩性视频-久久久蜜桃-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少妇| 久久久国产精品人人片 | aaa日韩| 欧美女同视频 | 欧美a级成人淫片免费看 | 超碰在线一区 | 日韩精品电影一区二区 | 奇米影视第四色7777 | 欧美熟妇久久久久 | 性激情视频 | 欧美大片91 | 91精品国自产在线偷拍蜜桃 | 亚洲蜜臀av乱码久久精品蜜桃 | 久久久久久久久久影院 | 亚洲欧美中文字幕5发布 | 精品国产乱码久久久人妻 | 欧美性猛交xxxx乱大交蜜桃 | 国产粉嫩在线观看 | 性色av蜜臀av浪潮av老女人 | 日韩一区二区三 | 亚洲成人第一 | 日本三级黄色录像 | 亚洲精品高潮 | 日韩中文一区 | 日本熟妇一区二区三区四区 | 成人h在线 | 国产精品福利一区二区 | 91传媒视频在线观看 | 日韩五十路 | 播放灌醉水嫩大学生国内精品 | 超碰p| 欧美日韩三级在线 | 天天干天天爽天天射 | eeuss一区二区 | 青青毛片 | 欧美午夜理伦三级在线观看 | 日韩欧美综合一区 | 欧美99| 色哟哟免费在线观看 | 欧美干干 | 日韩成人一区二区 | 在线播放毛片 | 羞羞的网站在线观看 | 领导揉我胸亲奶揉下面 | 国产高清精品一区 | 欧美日韩亚洲国产一区 | 无码人妻精品丰满熟人区 | 91精品人妻互换一区二区 | 嫩草视频在线观看 | 公肉吊粗大爽色翁浪妇视频 | 精品国产一区二区三区在线 | av成人在线免费观看 | 99ri精品| 日日干夜夜拍 | 丁香激情五月少妇 | 国产丰满农村老妇女乱 | 老妇女性较大毛片 | 欧美怡红院 | 亚洲精品字幕 | 超碰久操 | 国产三级精品视频 | 成人在线观看黄色 | 亚洲在线免费看 | 69av视频在线观看 | 国产 中文 字幕 日韩 在线 | 午夜免费福利在线 | 久久精品国产亚洲av嫖农村妇女 | 亚洲成人h| 久久久久久久 | 天天宗合 | 国产成人av一区二区 | 成人免费在线观看 | 亚洲国产精品一区二区尤物区 | 综合狠狠开心 | 国产一区二区在 | 免费在线观看黄色 | 精品人妻一区二区三区四区 | 欧美久草| 国产精品亚洲а∨天堂免在线 | 亚洲jizzjizz日本少妇 | 午夜合集 | 波多野结衣网址 | 免费人成视频在线播放 | 黑人操亚洲人 | 中文字幕日韩av | 四虎国产在线 | 蜜臀av中文字幕 | 国产在线综合视频 | 97国产精品视频 | 国产又黄又猛视频 | 中文字幕一区二区三区四区五区 | 国产黄色免费视频 | 青娱乐免费在线视频 | 黄色片在线观看免费 | 日本三级视频 |