Express框架是什么

Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特征,帮助你创建各种Web应用,我们可以使用 npm install express命令进行下载。
是创建网站用的。

Express框架特性

提供了方便简洁的路由定义方式(比如router)

对获取HTTP请求参数进行了简化处理

对模板引擎支持程度高,方便渲染动态HTML页面

提供了中间件机制有效控制HTTP请求

拥有大量第三方中间件功能进行扩展

基于express 封装mvc框架 express框架介绍_基于express 封装mvc框架


send()方法

//send() 会自动检测响应内容的类型
	//把内容自动设置到响应头中
	//设置响应内容的类型编码防止乱码
	//自动设置HTTP状态码

中间件

中间件就是一堆方法,可以接收客户端发来的请求,可以对请求做出响应,也可以将请求继续交给下一个中间件继续处理。

基于express 封装mvc框架 express框架介绍_客户端_02


中间件又两部分组成:第一部分由框架提供的,用于接收请求的方法,第二部分由开发人员提供的,用于处理请求的方法。

基于express 封装mvc框架 express框架介绍_基于express 封装mvc框架_03


可以针对同一个请求设置多个中间件,对同一个请求进行多次处理。

默认情况下,请求从上到下一次匹配中间件,一旦匹配成功,终止匹配。

可以调用next方法将请求的控制权交给下一个中间件,直到遇到结束请求的中间件。

基于express 封装mvc框架 express框架介绍_基于express 封装mvc框架_04


app.use中间件用法

app.use 匹配所有的请求方式,可以直接传入请求处理函数,代表接收所有的请求。

基于express 封装mvc框架 express框架介绍_node.js_05


基于express 封装mvc框架 express框架介绍_客户端_06

中间件应用

  1. 路由保护,客户端在访问需要登录的页面时,可以先使用中间件判断用户登录状态,用户如果为登录,则拦截请求,直接响应,禁止用户进入需要登录的页面。
    (路由的功能:简单来说就是为客户响应内容,在开启服务器后,要启动路由)
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('网站服务器启动成功');
  1. 网站维护公告,在所有路由的最上面定义接收所有请求的中间件,直接为客户端做出响应,网站正在维护中。
app.use((req, res, next) => {
	res.send('网站正在维护');
})
  1. 自定义404界面,放在所有路由后面
app.use((req, res, next) => {
	//为客户端响应状态码以及提示信息
	//设置状态码
	res.statue(404);
		.send('当前访问的页面不存在')
})

错误处理中间件

在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如文件读取失败,数据库连接失败。当程序出错时,就无法再继续下去,如果想要继续下去就要捕获错误,对错误进行处理。

错误处理中间件是一个集中处理错误的地方。

基于express 封装mvc框架 express框架介绍_服务器_07


这个方法只能处理同步支持错误,当异步执行出错时,不能检测出来,需要手动调用

next()方法

基于express 封装mvc框架 express框架介绍_客户端_08

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('网站服务器启动成功');

基于express 封装mvc框架 express框架介绍_客户端_09