Express
原生的http在某些方面表现不足以应对我们的开发需求,所以就需要使用框架来加快我们的开发效率,框架的目的就是提高效率,让我们的代码高度统一。
在node中有很多web开发框架。主要学习express
http://expressjs.com/
,其中主要封装的是http。```javascript
// 1 安装
// 2 引包
var express = require(‘express’);
// 3 创建服务器应用程序
// 也就是原来的http.createServer();
var app = express();// 公开指定目录
// 只要通过这样做了,就可以通过/public/xx的方式来访问public目录中的所有资源
// 在Express中开放资源就是一个API的事
app.use(‘/public/‘,express.static(‘/public/‘));//模板引擎在Express中开放模板也是一个API的事
// 当服务器收到get请求 / 的时候,执行回调处理函数
app.get(‘/‘,function(req,res){
res.send(‘hello express’);
})// 相当于server.listen
app.listen(3000,function(){
console.log(‘app is runing at port 3000’);
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
## hello world:
```javascript
// 引入express
var express = require('express');
// 1. 创建app
var app = express();
// 2.
app.get('/',function(req,res){
// 1
// res.write('Hello');
// res.write('World');
// res.end()
// 2
// res.end('hello world');
// 3
res.send('hello world');
})
app.listen(3000,function(){
console.log('express app is runing...');
})
基本路由
路由:
- 请求方法
- 请求路径
- 请求处理函数
get:
1 | //当你以get方法请求/的时候,执行对应的处理函数 |
post:
1 | //当你以post方法请求/的时候,执行对应的处理函数 |
Express静态服务API
1 | // app.use不仅仅是用来处理静态资源的,还可以做很多工作(body-parser的配置) |
在Express中配置使用art-templete
模板引擎
在node中,有很多第三方模板引擎都可以使用,不是只有
art-template
,还有ejs,jade(pug),handlebars,nunjucks
安装:
1 | npm install --save art-template |
配置:
1 | app.engine('html', require('express-art-template')); |
使用:
1 | app.get('/',function(req,res){ |
如果希望修改默认的views
视图渲染存储目录,可以:
1 | // 第一个参数views千万不要写错 |
在Express中获取表单请求数据
获取get请求数据:
Express内置了一个api,可以直接通过req.query
来获取数据
1 | // 通过requery方法获取用户输入的数据 |
获取post请求数据:
在Express中没有内置获取表单post请求体的api,这里我们需要使用一个第三方包body-parser
来获取数据。
安装:
1 | npm install --save body-parser; |
配置:
// 配置解析表单 POST 请求体插件(注意:一定要在 app.use(router) 之前 )
1 | var express = require('express') |
使用:
1 | app.use(function (req, res) { |
在Express中配置使用express-session
插件操作
安装:
1 | npm install express-session |
配置:
1 | //该插件会为req请求对象添加一个成员:req.session默认是一个对象 |
使用:
1 | // 读 |
提示:
默认Session数据时内存储数据,服务器一旦重启,真正的生产环境会把Session进行持久化存储。
Express中间件
中间件的概念
中间件:把很复杂的事情分割成单个,然后依次有条理的执行。就是一个中间处理环节,有输入,有输出。
说的通俗易懂点儿,中间件就是一个(从请求到响应调用的方法)方法。
把数据从请求到响应分步骤来处理,每一个步骤都是一个中间处理环节。
1 | var http = require('http'); |
同一个请求对象所经过的中间件都是同一个请求对象和响应对象。
1 | var express = require('express'); |
中间件的分类:
应用程序级别的中间件
万能匹配(不关心任何请求路径和请求方法的中间件):
1 | app.use(function(req,res,next){ |
关心请求路径和请求方法的中间件:
1 | app.use('/a',function(req,res,next){ |
路由级别的中间件
严格匹配请求路径和请求方法的中间件
get:
1 | app.get('/',function(req,res){ |
post:
1 | app.post('/a',function(req,res){ |
put:
1 | app.put('/user',function(req,res){ |
delete:
1 | app.delete('/delete',function(req,res){ |
总结
1 | var express = require('express'); |
错误处理中间件
1 | app.use(function(err,req,res,next){ |
配置使用404中间件:
1 | app.use(function(req,res){ |
配置全局错误处理中间件:
1 | app.get('/a', function(req, res, next) { |
内置中间件
- express.static(提供静态文件)
第三方中间件
- body-parser
- compression
- cookie-parser
- mogran
- response-time
- server-static
- session