一、什么是 Express ?
Express 是一个基于 Node.js 封装的上层服务框架,它提供了更简洁的 API 更实用的新功能。
它通过中间件和路由让程序的组织管理变的更加容易;它提供了丰富的 HTTP 工具;
二、Express 给 Node.js 带来了什么?
从大的方面来说,Express 为 Node.js 的 HTTP 模块带来了两大特性:
通过提供大量易用接口,简化了程序的复杂度。例如上面放松 JPEG 图片问题,Express 可以将代码压缩带一行。
它允许对请求处理函数进行拆分,将其重构为很多负责特定请求的小型请求处理函数。这便于模块化和后期维护。
三、安装express及基本使用
$ npm install express –save
$ mkdir express-HelloWorld-demo
进入该目录,然后初始化
$ npm init
会发现项目目录里边多了一个package文件,里边定义了项目的名称、描述、版本等,就可以安装express了。
$ npm install –save express
执行以上命名后,在项目的根目录下,新建一个启动文件,假定叫做app.js。
let express = require('express');
let app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
然后,运行脚本
$ node app.js
四、request 和 response 对象的具体介绍:(查阅资料)
1、Request 对象 - request 对象表示 HTTP 请求,包含了请求查询字符串,参数,内容,HTTP 头部等属性。常见属性有:
eq.app:当callback为外部文件时,用req.app访问express的实例
req.baseUrl:获取路由当前安装的URL路径
req.body / req.cookies:获得「请求主体」/ Cookies
req.fresh / req.stale:判断请求是否还「新鲜」
req.hostname / req.ip:获取主机名和IP地址
req.originalUrl:获取原始请求URL
req.params:获取路由的parameters
req.path:获取请求路径
req.protocol:获取协议类型
req.query:获取URL的查询参数串
req.route:获取当前匹配的路由
req.get():获取指定的HTTP请求头
2、Response 对象 - response 对象表示 HTTP 响应,即在接收到请求时向客户端发送的 HTTP 响应数据。常见属性有:
res.app:同req.app一样
res.append():追加指定HTTP头
res.set()在res.append()后将重置之前设置的头
res.cookie(name,value [,option]):设置Cookie
opition: domain / expires / httpOnly / maxAge / path / secure / signed
res.clearCookie():清除Cookie
res.download():传送指定路径的文件
res.get():返回指定的HTTP头
res.json():传送JSON响应
res.jsonp():传送JSONP响应
res.send():传送HTTP响应
五、中间件
原生的 Node.js 使用一个 request 处理函数应对所有请求并做出响应。
中间件可以处理各种任务,从记录请求到发送静态文件到设置 HTTP 头部。开发者可以通过为 Express 开发中间件来拓展其功能。
1、静态文件
Express 提供了内置的中间件 express.static 来设置静态文件如:图片, CSS, JavaScript 等。可以使用 express.static 中间件来设置静态文件路径。
六、路由
可以为请求处理提供多个回调函数,其行为类似中间件。唯一的区别是这些回调函数有可能调用 next('route') 方法而略过其他路由回调函数。
与中间价类似,路由对请求处理函数进行了拆分。不同的是,路由根据请求的 URL 和 HTTP 方法来决定处理方式的。当用户使用 GET 去请求主页时,Express 会返回对应的主页内容。路由的处理也是通过处理函数进行定义的。而不同的行为会调用不同的处理函数。
1、express.router()
第一步引入express 并且创建express实例
var express = require('express')
var router = express.Router();
第二步使用express路由方法: router.METHOD(PATH, HANDLER)
Express 中的中间件和路由相辅相成。