Express
基于 Node.js 平台,一个快速、开放、极简的 Web 开发框架
Express提供了一个轻量级模块,把node.js的http功能封装在一个简单易用的接口中。Express也扩展了http模块的功能,能轻松处理路由、响应、cookie和HTTP请求的状态
(一) 安装和配置
全局安装
npm install -g express
查看版本
express --version
使用Express生成器创建一个Express项目
全局安装 express-generator
npm install -g express-generator
创建项目 myapp
express myapp
安装依赖
cd myapp
npm install
启动项目
npm start
通过 express-generator 创建的项目一般都有如下目录结构
bin/www文件中是通过
var server = http.createServer(app);
server.listen(port);
创建服务器并监听指定端口, 然后在 app.js 中对访问此端口的请求进行处理
在入口文件 app.js 中, 主要做了以下工作:
- 导入相关模块(包含第三方模块和自定义模块, 以及express模块), 例如:
var createError = require('http-errors'); // 错误处理模块
var express = require('express');
var path = require('path'); // 路径处理模块
var cookieParser = require('cookie-parser'); // cookie解析
var logger = require('morgan'); // 日志打印
- 创建express实例
var app = express()
- 使用app.set 设置express内部的一些参数, 例如:
// 设置模板引擎
app.set('view engine', 'html');
app.set('views', path.resolve(__dirname, 'views'));
- 使用app.use 注册中间件函数, 例如:
// 注册中间件
app.use(logger('tiny')); // 设置日志打印格式
app.use(express.json()); // 对请求进行json解析
app.use(express.urlencoded({
extended: false })); // 对请求的URL进行解析
app.use(cookieParser()); // cookie解析
app.use(express.static(path.join(__dirname, 'public'))); // 设置静态资源的路径
(二) 路由和中间件
Express是一个路由和中间件Web框架,其自身的功能很少:Express应用程序本质上是一系列中间件函数调用
中间件具有以下功能:
- 执行任何代码
- 更改请求和响应对象
- 结束请求-响应周期
- 调用中间件堆栈中的下一个中间件函数
如果在一个中间件函数中没有结束请求-响应周期, 那么应该使用next() 将该请求的控制权传递给下一个中间件函数, 否则该请求就会被挂起
在express中, 主要有以下类型的中间件:
- 应用层中间件
- 路由级中间件
- 错误处理中间件
- 内置中间件
- 第三方中间件
- 应用层中间件
var app = express()
app.use()
app.get()
app.post()
app.use(function (req, res, next) {
console.log('每个请求都会执行')
next()
})
上面的中间件函数没有一个匹配的路径, 所以它在每次应用收到请求时都会执行