-
Express總結(jié)
安裝
基本用法
Requet對(duì)象
Response對(duì)象
路由
中間件
查看全部 -
錯(cuò)誤處理中間件
什么是錯(cuò)誤處理中間件
專門處理錯(cuò)誤的中間件
有4個(gè)參數(shù):err,req,res,next
?這4個(gè)參數(shù)必須存在,即使不用也不能省略,因?yàn)樵创a中是通過(guò)4個(gè)參數(shù)個(gè)數(shù)是不是4來(lái)判斷這是什么中間件,是4的話就是錯(cuò)誤處理中間件
(err,req,res,next)=>{
如何將錯(cuò)誤傳遞給錯(cuò)誤處理中間件
在出錯(cuò)的地方調(diào)用next(錯(cuò)誤或錯(cuò)誤信息)把錯(cuò)誤傳遞給錯(cuò)誤處理中間件
next('route')會(huì)跳轉(zhuǎn)到下一個(gè)路由,不會(huì)把錯(cuò)誤傳遞給錯(cuò)誤處理中間件
查看全部 -
第三方中間件
在響應(yīng)中設(shè)置cookie
Set-Cookie
res.set('Set-Cookie','username=simon;Max-Age=3');
Max-Age=3 單位是s
使用第三方中間件cookie-parser處理請(qǐng)求中的cookie
npm install cookie-parser
會(huì)將請(qǐng)求中的cookie處理后放入req.cookies中
查看全部 -
Express內(nèi)置中間件
處理請(qǐng)求體中application/x-www-form-urlencoded格式的數(shù)據(jù)
express.urlencoded();
extended必須傳參數(shù){extended:false}
extended:false 表示內(nèi)部使用querystring模塊,推薦
extended:true 表示內(nèi)部使用qs模塊
qs模塊可以解析更復(fù)雜的字符串,這里沒(méi)必要使用
qs: https://www.npmjs.com/package/qs
處理請(qǐng)求體中application/json格式的數(shù)據(jù)
express.json();
提供靜態(tài)資源
通過(guò)/static 來(lái)訪問(wèn)靜態(tài)資源
app.use('/static',express.static(path.join(__dirname,'public')));
const?path=require('path');
express.static(path)
app.use(express.static(path.join(__dirname,'public')));
查看全部 -
Router級(jí)中間件
user中間件
使用router.use()方法將中間件提供給Express調(diào)用
use()方法的第一個(gè)參數(shù)默認(rèn)是/,可以省略
use()方法可以匹配所有的HTTP方法
use()方法匹配的路徑的規(guī)則為:從頭包含匹配
可以給同一個(gè)路徑注冊(cè)多個(gè)中間件函數(shù)
可以在一個(gè)use()方法中注冊(cè)多個(gè)中間件函數(shù)
METHOD和all中間件
使用router.METHOD()方法或router.all()方法將中間件提供給Express調(diào)用
router.METHOD()具體指:router.get()、router.post()、router.put()、router.delete()等方法
METHOD()或all()方法的第一個(gè)參數(shù)都要寫出來(lái),不能省略
METHOD()方法可以匹配所有的HTTP方法,all()方法會(huì)匹配所有的HTTP方法
METHOD()方法或all()匹配的路徑的規(guī)則為:路徑相等匹配
可以給同一個(gè)路徑注冊(cè)多個(gè)中間件函數(shù)
可以在一個(gè)METHOD()方法或all()方法中注冊(cè)多個(gè)中間件函數(shù)
可以通過(guò)next('route')跳到下一個(gè)路由
next('route')只會(huì)在METHOD()或all()方法中起作用
Router級(jí)中間件的應(yīng)用
查看全部 -
App級(jí)中間件的應(yīng)用
處理請(qǐng)求體中application/x-www-form-urlencoded格式的數(shù)據(jù)
處理請(qǐng)求體中application/json格式的數(shù)據(jù)
查看全部 -
App級(jí)中間件
use中間件
使用app.use()方法將中間件提供給Express調(diào)用
use()方法的第一個(gè)參數(shù)默認(rèn)就是'/',可以省略
use()方法可以匹配所有的http中的方法(get/post/delete/put……)
use()方法匹配路徑的規(guī)則為:從頭包含匹配
可以給同一個(gè)路徑注冊(cè)多個(gè)中間件函數(shù)
可以在一個(gè)use()方法中注冊(cè)多個(gè)中間件函數(shù)
METHOD和all中間件
使用app.METHOD()或app.all()方法將中間件直接提供給Express調(diào)用
app.METHOD()具體指:app.get()、app.post()、app.put()、app.delete()等
METHOD()或all()方法第一個(gè)參數(shù)都要寫出來(lái),不能省略
METHOD()方法會(huì)匹配對(duì)應(yīng)的HTTP方法,all()方法會(huì)匹配所有的HTTP方法
METHOD()或all()方法匹配路徑的規(guī)則為:路徑相等匹配
可以給同一個(gè)路徑注冊(cè)多個(gè)中間件函數(shù)
可以在一個(gè)METHOD()或all()方法中注冊(cè)多個(gè)中間件函數(shù)
可以通過(guò)next('route')跳轉(zhuǎn)下一個(gè)路由
next('route')只會(huì)在METHOD()或all()中起作用
查看全部 -
認(rèn)識(shí)中間件
中間件的地位
Express是一個(gè)路由和中間件的Web框架
Express應(yīng)用本質(zhì)就是一系列中間件函數(shù)的調(diào)用
什么是中間件
函數(shù)
Express調(diào)用的函數(shù)
函數(shù)調(diào)用時(shí)會(huì)被Express傳入3個(gè)參數(shù):req、res、next
中間件有什么用
將一個(gè)請(qǐng)求的處理過(guò)程,分解到多個(gè)中間件中,每個(gè)中間件專門干一件事
使代碼邏輯清晰,便于維護(hù)
中間件可以做什么
可以執(zhí)行任何代碼
更改req和res對(duì)象
結(jié)束請(qǐng)求-響應(yīng)周期
調(diào)用stack棧中的下一個(gè)中間件
中間件函數(shù)的調(diào)用機(jī)制
匹配上的中間件會(huì)按順序執(zhí)行
一次執(zhí)行一個(gè)中間件,如果要執(zhí)行下一個(gè)匹配上的中間件,調(diào)用next()
如果當(dāng)前中間件沒(méi)有結(jié)束請(qǐng)求-響應(yīng)周期,必須調(diào)用next()
中間件的分類
App級(jí)中間件
Router級(jí)中間件
Express內(nèi)置中間件
第三方中間件
錯(cuò)誤處理中間件
查看全部 -
路由
什么是路由
路由指的是:客戶端使用特定的HTTP方法(GET、POST、PUT、DELETE等)對(duì)特定路徑(/、/login等)發(fā)送請(qǐng)求,應(yīng)用程序要如何響應(yīng)
基礎(chǔ)路由
????app.get('/',(req,res)=>{ ????res.send('Hi'); ????}); ????app.post('/user/login',function(req,res){ ?????res.send('登錄成功'); ?????}); ????app.put('/dynamic',(req,res)=>{ ?????res.send('動(dòng)態(tài)更新成功'); ?????}); ????app.delete('/dynamic',(req,res)=>{ ??????res.send('動(dòng)態(tài)刪除成功'); ??????}) ????app.get('/dynamic',(req,res)=>{ ??????res.send('動(dòng)態(tài)獲取成功'); ??????});
使用Router管理路由
const?userRouter=express.Router(); const?dynamicRouter=express.Router(); const?commentRouter=express.Router(); userRouter.post('/user/register',(req,res)=>{ ?????res.send('注冊(cè)成功?userRouter'); ?}); ?userRouter.post('/user/login',(req,res)=>{ ?????res.send('登錄成功?userRouter'); ?}); ?app.use(userRouter); ? ?userRouter.post('/register',(req,res)=>{ ?????res.send('注冊(cè)成功?userRouter'); ?}); ?userRouter.post('/login',(req,res)=>{ ?????res.send('登錄成功?userRouter'); ?}); ? const?userRouter=require('./router/user'); app.use('/user',userRouter);
查看全部 -
響應(yīng)動(dòng)態(tài)頁(yè)面
1.安裝ejs模板引擎 npm install ejs
2.在Express中使用ejs模板引擎
?2.1.設(shè)置模板所在的目錄,默認(rèn)是views
app.set('views',path.join(__dirname,'view'));
?2.2.設(shè)置默認(rèn)的模板后綴名,省略不寫的時(shí)候有用
app.set('view?engine','ejs'); app.set('view?engine','html');
2.3.設(shè)置指定后綴名的文件使用什么模板引擎
app.engine('html',require('ejs').__express);
2.4.使用res.render()渲染模板
res.render('user',{ ????????id, ????????title:'用戶?${id}?的首頁(yè)', ????????html:'<h1>我是HTML字符串</h1>', ????????user:[ ????????????{ ????????????????username:'simon', ????????????????gender:'male' ????????????}, ????????????{ ????????????????username:'wanisha', ????????????????gender:'female' ????????????} ????????] ????});
查看全部 -
Response對(duì)象
Response對(duì)象的屬性
console.log(res.app===app,req.res===res);
Response對(duì)象的方法
res.redirect('/login')
res.sendStatus(404);
res.status(404).send("沒(méi)有找到該頁(yè)面");
res.set('Content-type','text/plain;charset=utf-8');
res.sendFile(path.join(__dirname,'public','index.html'));
res.send("Hi Express");
查看全部 -
Resquest對(duì)象
Request對(duì)象的屬性
req.url?
req.path
req.query
req.method
req.headers
Request對(duì)象的方法
req.get("user-agent")?
req.header("User-agent")
查看全部 -
Express的基本用法
使用Express搭建Web服務(wù)器
? ? ?const express=require('express');
? ? ?const app=express();
? ? ?const port=4000;
? ? ?app.listen(port,function(){ console.log('服務(wù)器在 ${port} 端口啟動(dòng)成功');})
使用nodemon自動(dòng)重啟服務(wù)器
npm install -g nodemon
nodemon xx.js 自動(dòng)重啟服務(wù)器
package.json 配置? "start": "nodemon xx.js" npm start
使用postman發(fā)送請(qǐng)求
查看全部 -
安裝Express
直接安裝 npm init(package.json)npm install Express
通過(guò)Express提供的腳手架安裝 npm install -g Express-generator/ Express generator 自動(dòng)生成項(xiàng)目目錄 npm install 安裝依賴 npm start 啟動(dòng)服務(wù)
查看全部 -
初識(shí)Express
什么是Express
基于Node.js的框架,能夠幫助我們快速搭建Web服務(wù)器
對(duì)http模塊進(jìn)行了封裝,簡(jiǎn)化了很多操作
為什么要使用Express
原生開發(fā)Web服務(wù)器比較繁瑣
使用Express可以省去這些繁瑣的操作,只關(guān)注核心業(yè)務(wù)邏輯
使用Express能做什么
提供靜態(tài)資源
提供動(dòng)態(tài)資源
提供接口和數(shù)據(jù)
Express就是能夠幫助我們搭建服務(wù)器
查看全部 -
初識(shí) Express小什么是 Express>基于 Node.is的框架,能夠幫助我們快速搭建Web 服務(wù)器> 對(duì) http 模塊進(jìn)行了封裝,簡(jiǎn)化了很多操件查看全部 -
???????? Express基礎(chǔ)
一、入門課程
1、要有 Node.js基礎(chǔ)
2、掌握async/await 的用法
二、課程目標(biāo)
使用Express 搭建 Web 服務(wù)器
三、Express 的版本
1、目前主流版本: 4.x
2、Express 5中的變化
查看全部 -
???? Express 的基本用法
1、使用Express 搭建 Web服務(wù)器
2、使用 nodemon 自動(dòng)重啟服務(wù)器
3、使用 Postman 發(fā)送請(qǐng)求
查看全部 -
撒打算
查看全部 -
錯(cuò)誤處理中間件必須有4個(gè)(err,req,res,next)查看全部
-
render就是渲染模板查看全部
-
req代表了請(qǐng)求信息查看全部
-
從Node.js v14.0.0開始,querystring模塊已經(jīng)被移出Node.js核心模塊,成為了一個(gè)獨(dú)立的npm包。因此,如果你在使用較新版本的Node.js,你需要通過(guò)npm或yarn來(lái)安裝這個(gè)包。
npm install querystring
查看全部 -
這里很不錯(cuò)
查看全部
舉報(bào)