Express框架是什么
Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特征,帮助你创建各种Web应用,我们可以使用 npm install express命令进行下载。
是创建网站用的。
Express框架特性
提供了方便简洁的路由定义方式(比如router)
对获取HTTP请求参数进行了简化处理
对模板引擎支持程度高,方便渲染动态HTML页面
提供了中间件机制有效控制HTTP请求
拥有大量第三方中间件功能进行扩展
send()方法
//send() 会自动检测响应内容的类型
//把内容自动设置到响应头中
//设置响应内容的类型编码防止乱码
//自动设置HTTP状态码
中间件
中间件就是一堆方法,可以接收客户端发来的请求,可以对请求做出响应,也可以将请求继续交给下一个中间件继续处理。
中间件又两部分组成:第一部分由框架提供的,用于接收请求的方法,第二部分由开发人员提供的,用于处理请求的方法。
可以针对同一个请求设置多个中间件,对同一个请求进行多次处理。
默认情况下,请求从上到下一次匹配中间件,一旦匹配成功,终止匹配。
可以调用next方法将请求的控制权交给下一个中间件,直到遇到结束请求的中间件。
app.use中间件用法
app.use 匹配所有的请求方式,可以直接传入请求处理函数,代表接收所有的请求。
中间件应用
- 路由保护,客户端在访问需要登录的页面时,可以先使用中间件判断用户登录状态,用户如果为登录,则拦截请求,直接响应,禁止用户进入需要登录的页面。
(路由的功能:简单来说就是为客户响应内容,在开启服务器后,要启动路由)
const express = require('express');
//创建网站服务器
const app = express();
app.use('/admin', (req, res, next) => {
//用户没有登陆
let isLogin = true;
//入股用户登陆
if (isLogin) {
//让请求继续向下执行
next()
} else {
res.send('请登录/amin')
}
})
app.get('/admin', (req, res) => {
res.send('登陆成功')
})
app.listen(3000);
console.log('网站服务器启动成功');
- 网站维护公告,在所有路由的最上面定义接收所有请求的中间件,直接为客户端做出响应,网站正在维护中。
app.use((req, res, next) => {
res.send('网站正在维护');
})
- 自定义404界面,放在所有路由后面
app.use((req, res, next) => {
//为客户端响应状态码以及提示信息
//设置状态码
res.statue(404);
.send('当前访问的页面不存在')
})
错误处理中间件
在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如文件读取失败,数据库连接失败。当程序出错时,就无法再继续下去,如果想要继续下去就要捕获错误,对错误进行处理。
错误处理中间件是一个集中处理错误的地方。
这个方法只能处理同步支持错误,当异步执行出错时,不能检测出来,需要手动调用
next()方法
const express = require('express');
const fs = require('fs');
//创建网站服务器
const app = express();
app.get('/index', (req, res, next) => {
//node.js里面有个Error构造函数
//抛出错误
// throw new Error('程序发生未知错误')
fs.readFile('./demo.txt', 'utf8', (err, result) => {
if (err != null) {
next(err)
} else {
res.send(result)
}
})
// res.send('网站正常执行');
})
//错误处理中间件
app.use((err, req, res, next) => {
res.status(500).send(err.message);
})
app.listen(3000);
console.log('网站服务器启动成功');