- Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
- Express 是一个自身功能极简,完全是由路由和中间件构成一个的 web 开发框架:从本质上来说,一个Express 应用就是在调用各种中间件。
- 中间件本质上就是一个函数,中间件的功能包括:
- 执行任何代码。
- 修改请求和响应对象。
- 终结请求-响应循环。
- 调用堆栈中的下一个中间件。
- 官网地址 : http://www.expressjs.com.cn/
- 下载 : npm i -S express
var express = require('express');
// 创建一个app应用,所有功能方法都是基于这个app应用去使用的
var app = express();
//跟原生Node.js的优势,路由系统非常的完善。
//接收GET请求,第一个参数:就是请求的URL,第二个参数:就是回调函数
app.get('/index',(req,res,next)=>{
res.send('<h1>hello中文</h1>');
});
app.get('/list',(req,res,next)=>{
res.send('<h1>这是一个列表页</h1>');
});
//请求方法:POST\PUT\DELETE...
app.post('/register',(req,res,next)=>{
res.send('hello register post');
});
app.put('/register',(req,res,next)=>{
res.send('hello register put');
});
app.delete('/register',(req,res,next)=>{
res.send('hello register delete');
});
// 所有的请求方法,all()
app.all('/register',(req,res,next)=>{
res.send('hello register');
});
// 任何的请求方法和任何的url路由都可以触发回调
app.all('*',(req,res,next)=>{
res.send('404');
});
app.all(/^\/\d+$/,(req,res,next)=>{
res.send('404');
});
app.listen(3000 , 'localhost',(err)=>{
if(err){
console.log('服务器启动失败');
return;
}
console.log('服务器启动成功');
});
express中间件
-
express框架就是由各种中间件组成的,本身是极简的。
-
express中的中间件分类
- 应用级中间件 : app下使用的 app.use() app.get() app.post() app.all() …
- 路由级中间件 : express.router()
- 错误级中间件 : app.use((err,req,res,next)=>{});
- 内置中间件 : express.static :访问静态资源的 ; express.json、express.urlencoded : 能够拿到发送过来的数据
- 第三方中间件
-
中间件的执行步骤 :
function foo(req,res,next){
console.log(1);
next(); // 去执行下一个中间件,如果不调用next()话,就不会去执行下一个中间件
console.log(4);
}
function bar(req,res,next){
console.log(2);
next();
console.log(5);
}
function baz(req,res,next){
console.log(3);
next();
console.log(6);
}
app.use(foo);
app.use(bar);
app.use(baz);
//1 2 3 6 5 4 , 中间件的执行顺序非常重要,顺序不同导致结果是不一样的,如果你希望这个中间件被触发的几率是大的,那么就应该让这个中间件写的前面。
- express访问静态资源
// 参数:就是静态资源的根目录,当访问http://localhost:3000/logo.png -> 找 /public下的logo.png这个资源
app.use(express.static('public')); //static()函数内部就会调用next(),所以往上面放,不会影响到后面的中间件。
//还可以设置虚拟目录 http://localhost:3000/a/b/c/logo.png -> 找 /public下的logo.png
app.use('/a/b/c',express.static('public'));
express下面的req和res
-
req :
- req.url -> 请求url
- req.method -> 请求方法
- req.query -> 携带的参数(get请求的数据)
- req.body -> 数据(post请求的数据)
- req.headers -> 请求的头信息
-
res :
- res.send(); //发送内容(任何形式的)
- res.json({“code”:0});
- res.sendFile(’./a.txt’); // (要求必须是一个绝对路径)
- res.redirect(’/page/index’); // 重定向到其他url上
- res.render(); 渲染视图模板