文章目录
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