1.使用zlib模块对服务器端响应压缩
//1.1引入zlib模块 const zlib=require('zlib'); //1.2 设置内容的压缩形式 'Content-Encoding': 'gzip' //1.3创建gzip压缩 var gzip=zlib.createGzip(); //1.4使用读取流读取文件并响应到浏览器 fs.createReadStream('tmooc.html').pipe(gzip).pipe(res) |
2.express
基于nodejs平台,快速、开放、极简的web开发框架
www.expressjs.com.cn 中文官网
安装express
npm install express
创建web服务器
const express=require('express');//引入express模块 var app=express(); //创建web服务器 app.listen(8080); //监听端口 |
(1)路由
浏览器向web服务器发请求,web服务器根据请求的url和请求的方法来作出响应。
三要素:请求的url,请求的方法,响应(回调函数)
res 响应的对象
send() 设置并发送响应的内容,路由中只能使用一次
sendFile() 响应文件,要求使用绝对路径 __dirname
redirect() 响应的重定向,跳转到另一个url
req 请求的对象
method 请求的方法
url 请求的url
headers 请求的头信息
query 获取请求的查询字符串形式的数据,格式为对象
params 获取路由传递的数据
设置路由中接收数据的名称 app.get('/shopping/:price', function(req,res){ req.params //获取传递的数据,格式为对象 }); 浏览器传递数据 http://127.0.0.1:8080/shopping/4999 |
获取post请求的数据
req.on('data', function(mydata){ //通过事件 mydata.toString() //格式为查询字符串,需要解析为对象 }); |
get和post请求
在浏览器地址栏直接输入url,默认就是get请求,传递数据使用查询字符串,浏览记录可能被浏览器缓存。
post请求需要使用表单提交来完成(现阶段),获取数据使用事件
商品模块 product
列表 删除 修改
/product/list /product/delete /product/update
用户模块 user
列表 删除 修改
/user/list /user/delete /user/update
3.路由器
路由在使用的过程中,不同模块下的路由可能出现相同的url; 把同一个模块下的路由放到特定的路由器。
(1)创建路由器
//1.路由器是express下的一个功能 const express=require('express'); //2.创建路由器对象 var router=express.Router(); //3.往路由器中添加路由 router.get('/list',function(req,res){ res.send('这是用户列表'); }); //4.导出路由器对象 module.exports=router; |
(2)在web服务器中使用
//2.1引入路由器模块 const userRouter=require('./user.js'); //2.2使用路由器,挂载到特定的url app.use('/user',userRouter); |