Express介绍
什么是Express
- 基于Node.js开发的web开发框架,是一个Node.js模块
- express提供一系列强大的特性,帮助你创建各种web和移动设备应用
为什么要使用Express
- 为了让我们基于Node.js开发web更高效
Express官方网站
Express特点
- 实现了路由功能
- 中间件功能
- 对req和res对象的扩展
- 可以集成其他模板引擎
Express基本使用
安装
- npm搜索、安装,按照文档一步一步进行
- 创建package.js文件
- 安装express模块,npm install --save
演示hello world案例
var express = new Express();
var app = express();
// get方式请求
app.get('/index',function (req,res){
res.end('index');
});
app.listen(9090,function (){
console.log('http://localhost:9090');
});
res.end和res.send的区别
- res.end的参数是一个字符串,res.send的参数是任意类型的值
- res.end不会自动发送更多的响应报文头内容,res.send会发送更多的响应报文头内容,所以不会乱码
app.use()
- 在进行路由匹配时什么请求方法都可以
- 只匹配路径中的一部分,不严格匹配路径
app.all()
- 不区分请求方法
- 路径完全匹配
res.redirect(status,path)
作用:重定向
参数:status:状态码;path:文件路径
res.sendFile(filepath[,option],callbak)
作用:向客户端发送文件‘
参数:filepath文件路径;callback:回调函数
res.status(status)
作用:设置状态码
参数:status:要设置的状态码
res.status(404).end("文件不存在");
获取get请求的参数
app.get('/content',function(req,res){
console.log(req.query); // 获取get请求中路径的参数
res.end('content');
})
获取get请求的参数有两种形式req.params和req.query,req.params获取的是通过/content/id/43这种形式传递的参数
req.query获取的是通过/content?id=43这种形式传递的参数
获取post请求的参数
app.use(express.urlencoded({extended:true}));
app.post('/login',function(req,res){
console.log(req.body);
res.end('/login');
});
在获取post请求的参数之前需要使用express.urlencoded方法,该方法将通过x-www-formdata-urlencoded传递的请求体中的参数解析成一个对象命名为body,并挂载到request对象中。
express.urlencoded方法一个对象作为配置对象,对象中的属性为配置项
- extended 该属性为布尔值,如果为false,则使用querystring模块解析,如果为true使用qs模块解析
- inflate 该属性为布尔值,如果为true,则允许解析压缩的请求体,如果为false则不允许
- limit 限制请求体的数据大小
- parameterlimit 该属性为数值,控制传递参数的数量
- type 该属性为字符串,控制要解析的数据的类型,类似content-type
- verify 该属性是一个函数,如果给一个函数,该函数会接受req,res,buf,encoding四个参数
静态资源托管
const path = require('path');
app.use('/public',express.static(path.join(__dirname,'public')));
使用app.use第一个参数,需要监听的请求的地址,含有/public的地址会由express.static(path.join(__dirname,‘public’)) 所生成的函数代理,响应静态资源