09.express
1.简介
基于 Node.js 平台,快速、开放、极简的 web 开发框架
//1.引入express包
const express = require("express");
//2.引入的express是一个函数,需要调用express函数,才能得到一个应用对象app,所有搭建服务的方法属性都是app对象上,app就是express的实例
const app = express();
//3.书写路由(接口)
//4.启动服务(要告诉端口号,主机地址默认已经开启了127.0.0.1 本地ip192.168.17.62)
app.listen(3000, err => {
if (err) {
console.log("服务器启动失败", err);
return
}
console.log("服务器启动成功 请访问 http://192.168.17.62:3000");
})
2.基本路由
express路由是由URI和特定的HTTP方法组成的,涉及到应用如何响应客服端对某个网站节点的访问。
2.1路由定义
路由定义采用以下结构:app.METHOD(PATH, HANDLER)
● app是 的一个实例express。 ● METHOD是一个HTTP 请求方法,小写。 ● PATH 是服务器上的路径。 ● HANDLER 是路由匹配时执行的函数。
2.2 路由器express.Router
使用express.Router类创建模块化的、可安装的路由处理程序。一个Router实例是一个完整的中间件和路由系统;因此,它通常被称为“迷你应用程序”。
//express的使用
//1.导入express
const express = require("express");
//2.调用express方法创建一个应用对象
const app = express();
//3.定义接口(后端接口)
app.get("/show", (req, res) => {
res.end("hello express");
});
app.get("/", (req, res) => {
res.end("<h1>hello world</h1>");
});
app.get("/login", (req, res) => {
res.end("hello login");
});
//4.监听端口和启动服务
app.listen(3000, () => {
console.log("服务器启动成功,请访问http://127.0.0.1:3000");
});
3.静态文件
通过Express内置的express.static可以方便地托管静态文件,例如图片、CSS、JavaScript
//例如,通过如下代码就可以将 public 目录下的图片、CSS 文件、JavaScript 文件对外开放访问了:
app.use(express.static(path.resolve(__dirname, 'public')))
//现在,你就可以访问 public 目录中的所有文件了:
http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html
4.中间件
4.1什么是中间件
- Express 是一个自身功能极简,完全有路由和中间件构成的web开发框架:从本质上来说,一个Express应用就是在调用各种中间件。
- 中间件(Middleware)是一个函数,它可以访问req,res和一个next函数用来进行下一步操作。
- 如果当前中间件函数没有结束请求-响应循环,它必须调用
next()将控制权传递给下一个中间件函数。否则,请求将被挂起
作用:
1.执行任意代码 2.修改req和res对象 3.返回响应 4.调用下一个中间件或路由
4.2 中间件分类
-
应用级中间件 使用函数将应用级中间件绑定到app对象的一个实例上,
app.use()app.get().... -
路由器级中间件 路由器级中间件的工作方式与应用级中间件相同,只是它绑定到
express.Router(). -
错误处理中间件 在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如文件读取失败,数据库连接失败。 错误处理中间件是一个集中处理错误的地方。 以与其他中间件函数相同的方式定义错误处理中间件函数,除了使用四个参数而不是三个参数,特别是使用签名
(err, req, res, next)): -
内置中间件
-
- express.static提供静态资产,例如 HTML 文件、图像等。
-
- express.json使用 JSON 负载解析传入请求。注意:适用于 Express 4.16.0+
-
- express.urlencoded使用 URL 编码的有效负载解析传入请求。 注意:适用于 Express 4.16.0
-
第三方中间件 使用第三方中间件向 Express 应用程序添加功能。
//cookie中间件案例
var express = require('express')
var app = express()
var cookieParser = require('cookie-parser')
// load the cookie-parsing middleware
app.use(cookieParser())