use 的使用
var express = require('express');
var app = express();
//当我们使用 use 匹配路由为 ```/``` 时,表示所有路径,并且可以省略路径,直接写回调函数
//app.use('/',function(req,res){res.end('12345')});
//app.use(function(req,res){});
//当在使用 use 的时候,我们设置的匹配,只要设置路由的第一个地址```admin``` 就能匹配到,后面无论写多少拼接都可以匹配到
app.use('/admin',function(req,res){
res.write(req.originalUrl + '\n'); //admin/1234
res.write(req.baseUrl + '\n'); //admin
res.write(req.path + '\n'); //1234
//因为 res.send 与 res.write 有冲突所以这里用 res.end
res.end('success')
});
app.use(function(req,res){
res.end('12345');
next();
});
app.listen(3000);
- 为了提升复用性,我们在设置路由的时候,可以把回调函数抽离出来
var express = require('express');
var app = express();
app.use(haha);
app.listen(3000);
function haha(req,res,next){
res.end('success');
}
express 同时处理静态路由与中间件
开发过程中,静态资源一般存放在 public 文件夹下
并且如果有多种中间件,那么我们会把静态的中间件放在第一个位置,为了避免下面的中间件设置的时候,和静态的中间件冲突,避免被覆盖
var express = require('express');
var app = express();
//处理静态路由,给静态路由匹配一个标识,然后只匹配这个标识的时候,我们访问的路由才是静态资源
app.use('/jingtai',express.static('./public'));
app.get('/',function(req,res){
red.end('get-1111');
})
express 获取参数
express 中的 res.send() send 方法会自动设置响应头
- get 请求的获取参数
var express = require('express');
var app = express();
app.get('/',function(req,res){
//如果原生的 node 中获取参数,需要借助 url
//但是在 express 中不需要,只需要调用 req.query 方法
res.send(req.query)
})
- post 请求的获取参数
var express = require('express');
var body-parser = require('body-parser');
var app = express();
app.set('view engine','ejs');
app.get('/',function(req,res){
req.render('form');
});
app.use(bodyparser.urlencoded({extended:false}));
app.post('/',function(req,res){
//我们获取 post 请求参数
//对于 post 请求,如果是上传,我们获取参数一般需要通过 formidable 这个包获取,不能通过 body-parser
//如果是一般请求我们使用更轻量级的包 bodyu-pareser
//需要在处理 post 请求之前设置对应的 url 进行编码,(通过 use 中间件)
res.send(req.body);
});
app.listen(3000);