express是什么

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性创建各种 Web 应用,和丰富的 HTTP 工具。

使用 Express 可以快速地搭建一个完整功能的网站。

Express 框架核心特性:

  1. 可以设置中间件来响应 HTTP 请求。
  2. 定义了路由表用于执行不同的 HTTP 请求动作。
  3. 可以通过向模板传递参数来动态渲染 HTML 页面。

注: 本文不会涉及到第三点。

express响应hello world

我们创建一个1.js文件,然后在该文件夹下安装express

npm init
npm i express

然后在1.js中开始coding:

// 引入express
const express = require('express')

// 创建服务器
const app = express()

// 接受 get 且 url 为 / 的请求
app.get('/', (req,res) => {
// send会检测响应内容的类型,自动设置http状态码,响应的内容类型及编码
res.send('hello world')
})

// 监听3000端口
app.listen(3000)

然后通过node运行服务

node 1.js

我们访问localhost:3000,即可在页面中看见hello world

新建请求

app.get('/menu', (req,res) => {
res.send({ name: '首页', key: 1 })
})

我们访问localhost:3000/menu,即可在页面中看见{"name":"首页","key":1}

中间件

当我们想在某个函数做判断是否符合规则,是否放行;对一个请求进行多次处理时就需要中间件。
默认情况下从上到下匹配,一但匹配成功终止匹配;我们可以通过next将请求交给下个中间件,直到结束请求的中间件。

// 引入express
const express = require('express')

// 创建服务器
const app = express()

app.get('/menu', (req,res,next) => {
req.name = 'test'
next()
})

app.get('/menu', (req,res) => {
res.send(req.name)
})

// 监听3000端口
app.listen(3000)

use

中间件有什么用呢:

  1. 路由保护,如果用户登录了,允许访问对应内容;如果用户没有登陆,直接拒绝。
  2. 当我们想拦截所有请求时,如此时更新服务器,我们应该拦截住所有请求,统一返回禁止登录,就可以通过use去拦截住所有:
  3. 自定义404页面
  4. 错误处理
app.use((req,res,next) => {
res.send('禁止登录')
})

同样,我们可以匹配路由,如:

app.use('/menu', (req,res,next) => {
res.send('禁止访问menu')
})

注: 如果是404页面,由于前面说过处理是按照顺序来着,此时我们应该把此路由放在所有页面的最下面。

在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如文件读取失败,数据库连接失败;错误处理中间件就是一个集中处理错误的地方。