Express 请求处理
构建模块化路由
引用express模块
创建路由对象
express.Router();
//返回的就是路由对象
将路由请求路径进行匹配
app.use('/home',home);
在home路由下继续挂载路由
home.get('/index',(req,res)=>{
/home/index
res.send
})
对路由进行分组 创建一个路由对象 在创建好的路由对象中挂载路由
get请求参数
使用req.query
即可获取GET参数 会将GET参数转换为对象
Post参数的获取
post参数是通过请求来的,想要第三方模块处理请求,就要将所有请求拦截下来,用bodyParser
处理请求
Express中接收post请求参数需要第三方包 body-parser
引入body-parser模块
const bodyParser = require('body-parser');
配置body-parser模块
使用的是里面的urlencoded
方法
app.use(bodyParser.urlencoded({extended:false}))
extended:false
在函数内部会用urlquery对请求参数进行格式处理
extended:true
会用一个第三方模块qs模块对请求参数的格式进行处理
此方法的执行过程
检测post请求中是否包含请求参数,接收请求参数,将请求参数转换为对象类型,并在req中添加一个body属性,把请求参数传给body
路由参数
app.get('/find/:id',(req,res)=>{
});
localhost:3000/find/123
'/find/:id'
这样写了以后,一定要给参数,否则会报错
客户端向服务器端get传递参数的另一种形式
app.get('/index/:name/:age',(req,res)=>{
consle.log(req.params)
})
例如index/zhangsan/20
req.params()
返回的是一个对象
对象中存储了{name=zhangsan,age = 20}
静态资源处理
express.sratic(绝对路径)
app.use--->拦截所有请求
express模板引擎
art-template模板引擎的基础上封装了express-art-template模板赢钱的基础上封装了express-art-template
使用 npm install art-template express-art-template
app.engine('art',require('express-art-template'))
app.engine(模板的后缀,要使用的模板引擎);
设置模板存放位置
app.set('views',path.join(__dirname,'views'));
app.set(固定的views,绝对路径 一般都是在根目录下的views下 )
渲染模板是不写后缀,默认拼接art后缀
app.set('view engine','art')
app.get('/',(req,res)=>{
渲染模板
res.render('index'[,传入模板的数据 对象类型]);//只需要传递模板的名称即可,内部会帮我们拼接模板的后缀、所在位置 会将拼接好的直接响应到页面中
});
app.locals对象
将变量设置到app.locals对象下面,这个数据在所有的模板中都可以获取到
app.locals.users=[{
name:'zhangsan',
age:20
},{
name:'lisi'
}]