第七篇:node中间件详解

 🎬 江城开朗的豌豆:个人主页

 🔥 个人专栏 :《 VUE 》 《 javaScript 》

 📝 个人网站 :《 江城开朗的豌豆🫛 》 

⛺️ 生活的理想,就是为了理想的生活 !

在这里插入图片描述

目录

📘 引言:

📘 全局中间件

📘 路由中间件

 📘 日志中间件

 📘 往期篇章推荐

⭐  写在最后


📘 引言:

当今互联网时代,Node.js 成为了最受欢迎的服务器端开发平台之一。作为一名小白,学习 Node.js 可能会让你感到有些困惑和陌生。但是,不用担心!本文将带领你进入 Node.js 的世界,帮助你理解它的基本概念和学习路径。

Node.js 是构建高性能、可扩展网络应用程序的运行时环境。它基于 Chrome V8 JavaScript 引擎,并采用事件驱动、非阻塞的 I/O 模型,使得它能够处理大量并发连接而不阻塞其他操作。这使得 Node.js 成为构建实时应用程序、聊天应用、API 服务等的理想选择。

本文旨在为初学者提供一个简单的入门指南,介绍 Node.js 的核心概念、安装和配置环境的步骤,以及使用常见的模块和工具。我们还将探索如何编写简单的服务器端代码、处理 HTTP 请求和响应、读写文件、操作数据库等常见任务。

无论你是想成为一名全职的 Node.js 开发者,还是只是对学习这门技术感兴趣,本文都将为你提供一个良好的起点。我们将尽量以简洁明了的方式解释概念,并提供实际的示例代码帮助你理解。

让我们一起开始这段令人兴奋的 Node.js 学习之旅吧!

📘 全局中间件

// 中间件
const middleware = (req, res, next)=> {
    console.log('这是一个中间件');
    next();
}
app.use(middleware);

app.get('/home',(req,res)=>{
    res.send('home');
})
app.get('/about',(req,res)=>{
    res.send('about');
})

📘 路由中间件

// 局部中间件
app.get('/jubu', (req,res,next)=>{
    console.log('这是一个局部中间件');
    next();
},(req, res)=>{
    res.send('hom');
})

 📘 日志中间件

// 日志中间件
const logger = (req, res, next)=>{
    const time = new Date().toLocaleString();
    console.log(`当前时间:${time} 请求方式:${req.method} 路由地址:${req.url}`);
    next();
}
app.use(logger);//注册中间件

app.get('/home1',
    (req, res)=>{
        res.send('home33333');
    }
)
app.get('/about1',
    (req, res)=>{
        res.send('about3333');
    }
)

注意:如果忘记在中间件中调用 next 函数,并且又不直接返回响应时,服务器会直接卡在这个中间件不会继续执行下去哦!

 📘 往期篇章推荐

 📟 第一篇:node的背景及版本的检查

 📟 第二篇:新建node项目并运行

 📟 第三篇:搭建项目的两种代码格式

 📟 第四篇:怎么写express的路由(接口+请求) 

 📟 第五篇:express路由路径方式(字符串,字符串模式,和正则)

 📟 第六篇:express路由拆分(模块化) 

⭐  写在最后


请大家不吝赐教,在下方评论或者私信我,十分感谢🙏🙏🙏.

✅ 认为我某个部分的设计过于繁琐,有更加简单或者更高逼格的封装方式

✅ 认为我部分代码过于老旧,可以提供新的API或最新语法

✅ 对于文章中部分内容不理解

✅ 解答我文章中一些疑问

✅ 认为某些交互,功能需要优化,发现BUG

✅ 想要添加新功能,对于整体的设计,外观有更好的建议

最后感谢各位的耐心观看,既然都到这了,点个 👍赞再走吧!
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/360377.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nacos启动成功,程序连接失败

问题:nacos服务器启动成功后可以访问,但是程序连接却超时 解决:检查端口,2.0以上的版本需要开放的端口一共是三个!! 8848 9848 9849 找了很久是因为后面两个端口没有开放,原因是因为2.0以上…

控制台的过滤条请求类型被变成下拉选想变成一行

控制台的请求类型被变成下拉选了找到设置---实现----不选Redesign of the filter bar in the Network Panel(重新设计网络面板中的过滤条) 问题如图: 希望是如图: 解决方案:

空间数据分析和空间统计工具库PySAL入门

空间数据分析是指利用地理信息系统(GIS)技术和空间统计学等方法,对空间数据进行处理、分析和可视化,以揭示数据之间的空间关系和趋势性,为决策者提供有效的空间决策支持。空间数据分析已经被广泛运用在城市规划、交通管理、环境保护、农业种植…

Nacos服务注册源码解析

简介:本文将以图文方式详述 Spring Cloud Alibaba 技术体系之 Nacos 服务注册源码解析。 目录 一、Nacos 服务架构 二、Nacos 服务注册流程图(源码级别) 1. 注册中心核心工作流程 三、Nacos 服务注册源码解析 1. 服务注册 1.1 客户端服…

代码随想录 Leetcode110.平衡二叉树

题目: 代码(首刷看解析 2024年1月30日): class Solution { public:int depth(TreeNode* root) {if (root nullptr) return 0;int leftHeight depth(root->left);if (leftHeight -1) return -1;int rightHeight depth(root->right)…

【Linux C | 网络编程】getsockname 和 getpeername函数详解及C语言例子

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

【遥感专题系列】遥感影像信息提取之——人工目视解译

​遥感影像通过亮度值或像元值的高低差异(反映地物的光谱信息)及空间变化(反映地物的空间信息)来表示不同地物的差异,这是区分不同影像地物的物理基础。 ​人工解译是目前国内使用最多的一种影像提取方法,如…

Android studio环境搭建过程异常

异常:Connect timed out 创建新项目时,提示time out 解决方案:修改gradle下载地址,使用国内镜像地址 distributionUrlhttps\://services.gradle.org/distributions/gradle-8.2-bin.zip修改成distributionUrlhttps\://mirrors.c…

海外拓展必备:精细规划的出海策略,实现市场全球化的第一步

随着全球化的深入,越来越多的企业开始将目光投向海外市场,以寻求更广阔的发展空间。然而,进入新的市场并进行有效的海外营销并非易事,需要经过精心策划和系统性的执行。本文Nox聚星将和大家详细探讨出海营销的第一步应该如何着手&…

初始化和赋值

列表初始化 #include <iostream>struct test{int a; };class object{ public:object(int v10):a{v}{}int a; };int main(){test t1;test t2{};std::cout<<t1.a<<std::endl;std::cout<<t2.a<<std::endl;object b2{11};std::cout<<b2.a<…

泛谈一下数字化技能的学习,SPSS、Stata还是Python?技术、业务+表达、展现!

1.本科、专科上学时对于这些偏数学类的课程还是要好好学习 应知乎、小红书、CSDN很多年轻朋友、同学们的邀请&#xff0c;今天我泛谈一下数字化技能的学习。很多学生在本科或专科上学时代学过统计学、计量经济学、机器学习、数据分析、统计分析、数据挖掘、量化建模等一门或多…

宏集物联网HMI、工业树莓派、触控一体机,超值优惠限时放送

亲爱的客户朋友们&#xff1a; 新春佳节将至&#xff0c;为回馈广大新老客户们一年来的支持与厚爱&#xff0c;宏集科技推出一场盛大的新春促销活动&#xff01; 我们精选了一系列宏集科技优质产品&#xff0c;包括工业树莓派、物联网HMI、触控一体机等&#xff0c;为您的工程…

React通用后台模板

一. 项目初始化 1. 创建项目 环境 npm init vite 打开package.json,参考以下各模块版本: "dependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", "react-redux": "^7.2.8", …

探索Allure Report:提升自动化测试效率的秘密武器!

一.使用 Allure2 运行方式-Python # --alluredir 参数生成测试报告。 # 在测试执行期间收集结果 pytest [测试用例/模块/包] --alluredir./result/ (—alluredir这个选项 用于指定存储测试结果的路径)# 生成在线的测试报告 allure serve ./result二.使用 Allure2 运行方式-Ja…

Java项目:基于SSM框架实现的家纺用品销售管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm814基于SSM框架实现的家纺用品销售管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试…

【WebGIS实例】(13)MapboxGL+Vue 实现自定义组件地图气泡弹窗 popup

前言 没有前言&#xff0c;直接上代码了 代码 核心方法 const addComponentPopup (component, feature, lnglat, map) > {const popup new mapboxgl.Popup({// anchor: center, // center , top , bottom , left , right , top-left , top-right , bottom-left , and …

使用Neo4j做技术血缘管理

目录 一、neo4j介绍 二、windows安装启动neo4j 2.1下载neo4j 2.2 解压文件 2.3 启动neo4j 三、neo4j基础操作 3.1 创建结点和关系 3.2 查询 3.3 更改 3.4 删除 四、技术血缘Demo实现 4.1 构建节点对象 4.2 构建存储对象 4.3 创建有属性关联关系 4.4 最后是图结果…

【Unity3D日常开发】Unity3D中Text使用超链接并绑定点击事件

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在开发中遇到了要给Text加超链接的需求&#xff0c;研究了实现…

UE4 C++ 枚举类型

先在UCLASS()前写入&#xff1a; //定义枚举变量&#xff1a;方法一 UENUM(BlueprintType) //BlueprintType&#xff1a;在蓝图中可显示、创建该枚举变量 namespace MyEnumType //namespace&#xff1a;命名空间&#xff0c;支持同样的变量命令、便于访问//MyEnumType&#xf…