文章目錄
Express框架
- 基於Node.js平臺的,快速、開放、極簡的web開發框架
- express中文官網
- 下載安裝:
npm install express
//引入第三方的模塊express const express=require('express'); //創建web服務器 const app=express(); //設置端口 app.listen(8080);
- 路由
瀏覽器向web服務器發請求,web服務器根據特定的請求URL和請求的方法做出的響應res
:響應對象
res.send()
:設置響應內容併發送
res.redirect()
:響應的重定向,會跳轉到另一個URL
res.sendFile()
:響應文件,需要用到絕對路徑,_dirname
//路由 //請求的方法:get //參數1:請求的URL:/login //參數2:通過回調函數做出響應 app.get('/login',(req,res)=>{ //req和res和http模塊下的req和res不一樣,功能更加強大 //req請求的對象 //res響應的對象 //響應內容併發送 //res.send('<h2>這是登錄的網頁</h2>'); //響應的重定向(跳轉) //res.redirect('http://www.baidu.cn'); //響應文件 res.sendFile(__dirname+'/1.html'); });
req
:請求對象
req.method
:請求的方法
req.url
:請求的URL
req.query
:將查詢字符串解析爲對象//練習2:創建web服務器,瀏覽器端獲取搜索的頁面,服務器端創建對應的路由(get /serach),響應文件serach.html //優點:速度快,缺點:數據不安全 //路由,請求方法,get /search app.get('/search',(req,res)=>{ //響應文件 res.sendFile(__dirname+'/03_search.html'); }); //根據表單的請求創建對應的路由(get /mysearch),響應’這是所有搜索的數據‘ app.get('/mysearch',(req,res)=>{ //獲取傳遞的數據 //req.query將查詢字符串解析爲對象 //console.log( req.query ); //keyword是html中input的name res.send('這是所有搜索的數據:'+req.query.keyword); });
req.params
:獲取路由傳參的數據,並解析爲對象//路由傳參 //練習:創建路由(get /package),響應“這是包的詳細介紹:” //:pname設置形參,用於接收實參傳遞的數據 app.get('/package/:pname',(req,res)=>{ //console.log(req.params); //panme:'參數值' //獲取路由傳參的數據req.params res.send('這是包的詳細介紹:'+req.params.pname); });
練習1:創建路由
請求方法:get請求的URL:/idnex,響應’<h1>這是首頁</h1>’
請求方法:get請求的URL:/,跳轉到’/index’
練習2:創建web服務器,瀏覽器端獲取搜索的頁面,服務器端創建對應的路由(get /serach),響應文件serach.html
練習3:創建購物車的路由(get /shopping),傳遞商品的編號lid和價格price,在路由中獲取數據,並響應到瀏覽器端’編號:xxx, 價格:xxx’
練習4:創建web服務器,瀏覽器端獲取登錄的頁面,創建路由(get /login),響應文件login.html,點擊提交,再次向服務器發請求(post /mylogin),根據表單請求創建對應路由,響應登錄成功
- 路由器
把同一個模塊下的所有路由單獨的寫到一個文件下,給URL添加統一的前綴。
創建路由器
在服務器下引入並掛載//文件名:user.js //路由器文件 //1.引入express,路由器是express下的一個功能 const express=require('express'); //2.創建路由器 const router=express.Router(); //3.在路由器下添加路由 //獲取用戶列表路由(get /list) router.get('/list',function(req,res){ res.send('這是用戶列表'); }); //4.導出路由器對象,供web服務器使用 module.exports=router;
//文件名:app.js const express=require('express'); //引入路由器模塊 const userRouter=require('./user.js'); //console.log(userRouter); //創建web服務器 const app=express(); app.listen(8080); //把路由器引入並掛載到服務器下 //參數1:給路由中URL添加的前綴 訪問形式 /user/list //參數2:要掛載的路由器 app.use( '/user',userRouter );
練習:創建商品路由器product.js,並添加路由(get /list),在web服務器下引入並掛載,添加前綴/product