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