Nodejs之Express中间件的分类介绍

yizhihongxing

Node.js是一种基于Chrome V8引擎的开放源代码、跨平台的后端JavaScript运行环境。而Express是Node.js的一个简洁、灵活的Web应用架构,提供了一系列强大的特性。

在Express中,中间件是处理HTTP请求(如路由),以及HTTP响应的函数。通俗地说,就是在我们自己的代码实现前、后对请求进行的一些处理,它可以是一个或多个函数形成的一个处理流程,其中每个函数依次处理传递下来的请求和响应对象。它可以执行任何代码,写入或输出响应对象,以及对请求和响应对象进行修改等等。

在Express中,中间件可以分为四类:

  1. 应用级中间件:通过app.use()app.get()app.post()等方法来定义的中间件,它们绑定到应用程序对象上,用于日志记录、解析请求体、处理跨域请求等功能。

示例1:应用级日志中间件

const express = require('express');
const app = express();

// 定义日志中间件
const logger = (req, res, next) => {
  console.log(`${new Date().toLocaleString()} - ${req.method} ${req.url}`);
  next();
}

// 应用中间件
app.use(logger);

// 路由
app.get('/', (req, res) => {
  res.send('Hello World!');
});

// 监听端口
app.listen(3000, () => {
  console.log('Server is running at port 3000');
});
  1. 路由级中间件:通过app.route()router.route()等方式定义的中间件,用于检测特定路由请求,比如用户登录操作等。

示例2:路由级中间件

const express = require('express');
const app = express();
const router = express.Router();

// 定义路由级中间件
const auth = (req, res, next) => {
  if (req.query.user === 'admin') {
    console.log('Authorized user');
    next();
  } else {
    console.log('Unauthorized user');
    res.send('Unauthorized user');
  }
}

// 路由
router.get('/', auth, (req, res) => {
  res.send('Hello admin!');
});

// 注册路由
app.use('/admin', router);

// 监听端口
app.listen(3000, () => {
  console.log('Server is running at port 3000');
});
  1. 错误处理中间件:用于处理应用中未能捕获的错误,一般在中间件链的最后被定义。

示例3:错误处理中间件

const express = require('express');
const app = express();

// 路由
app.get('/', (req, res) => {
  throw new Error('oops!');
});

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something went wrong!');
});

// 监听端口
app.listen(3000, () => {
  console.log('Server is running at port 3000');
});
  1. 内置中间件:是由Express封装好的,使用不需要引入额外模块的中间件。常用的有express.json()express.urlencoded()等,用于解析请求体。

以上是Express中间件的四种分类及示例,通过理解和使用它们,可以让我们更快速、高效地开发出高质量的Web应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nodejs之Express中间件的分类介绍 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • node.js中的path.join方法使用说明

    Node.js中的path.join方法是一个非常常用的方法,它可以将多个路径拼接成一个完整的路径,并返回一个规范化后的路径。 方法说明 path.join方法属于Node.js的path模块中的一个方法,由于不需要创建path对象,也不需要指定this,因此可以直接使用该方法。 方法定义如下: path.join([…paths]) 其中,参数为多个需…

    node js 2023年6月8日
    00
  • ESLint和Jest中使用esm示例详解

    ESLint和Jest中使用esm示例详解 简介 ESLint是一个开源的JavaScript代码检查工具,它的目标是保证代码的一致性和避免错误。ESLint支持插件,我们可以使用它来编写自定义规则,以便强制执行代码的有效性和可读性。 Jest是一个流行的JavaScript测试框架,可用于测试React、Vue等前端框架以及Node.js应用程序等等,其功…

    node js 2023年6月8日
    00
  • Electron打包React生成桌面应用方法详解

    Electron打包React生成桌面应用方法详解 Electron 可以让你使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序。如果你正在使用 React 开发应用程序,并且想要将其转换为桌面应用程序,那么 Electron 是一个很好的选择。 下面是使用 Electron 打包 React 的步骤: 步骤 1:初始化 React …

    node js 2023年6月8日
    00
  • Vue指令工作原理实现方法

    Vue 指令是 Vue 模板中的特殊语法,它们以 v- 开头,用于对元素、组件或者DOM元素进行特定的绑定和操作。例如,v-for 用于循环渲染列表数据,v-if 用于条件渲染,v-bind 用于动态绑定属性等等。 Vue 指令的工作原理是基于 Vue.js 内部解析模板时实现的。当 Vue.js 开始执行编译模板的过程时,会将模板转换为虚拟 DOM 树,并…

    node js 2023年6月8日
    00
  • NodeJs中express框架的send()方法简介

    下面是关于“NodeJS中Express框架的send()方法”的详细讲解。 什么是send()方法 在Express框架中,send()方法是常用的响应方法之一。它被用来向客户端发送HTTP响应。它可以发送任何类型的响应,包括HTML、JSON、XML、文本等。此外,send()方法还可以根据响应内容自动设置Content-Type响应头,这是非常方便的。…

    node js 2023年6月8日
    00
  • node.js实现多图片上传实例

    具体的攻略如下: 1. 安装依赖 在开始项目前,需要先安装所需的依赖: npm install express multer 其中,express是Node.js的Web框架,用于创建服务器;multer是Node.js的一个中间件,用于处理HTTP上传请求,支持多文件上传。 2. 编写HTML页面 需要先编写一个HTML页面,用于展示表单和上传控件。以下为…

    node js 2023年6月8日
    00
  • Node.js学习教程之Module模块

    Module是Node.js中非常重要的一个概念,它不仅充实了Node.js的功能,还简化了Node.js中的代码实现。本篇教程将详细介绍Node.js Module的定义、使用方法以及相关的注意点。 什么是Module? Module是一个可以被其他模块导入和使用的Node.js文件或文件夹。在Node.js中,任何一个.js文件都可以看作是一个Modul…

    node js 2023年6月8日
    00
  • 浅谈React + Webpack 构建打包优化

    浅谈React + Webpack构建打包优化 本文将详细讲解如何使用Webpack对React项目进行构建打包优化。其中将会涉及到Webpack的各种特性和优化技巧,旨在帮助开发者提高React项目构建打包效率。下面将逐步展开。 Webpack的基本配置 Webpack是一个打包工具,最基本的配置是将所有的JavaScript文件打包为一个或多个JavaS…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部