浅谈Express

本篇文章仅以学习的角度分析express的相关特点,其他框架也特别优秀,很多都优于express,请文明讨论!(●'◡'●)

简介

Express 是一个基于 Node.js 平台的极简和灵活的 web 开发框架。它主要用于构建 Web 应用程序和 API(应用程序编程接口)。

上面太官方了,其中的重点是基于Nodejs

Express与高并发

Express的高并发是它的一大优势(当然,后续的许多框架的并发能力是优于express的,比如Fastify、Koa等,此处仅分析express此框架)。为什么?

上面说到,Express基于Node.js

Node.js 采用事件驱动非阻塞 I/O 模型 。这种模型使得服务器在处理 I/O 操作(如文件读写、数据库查询等)时,不会阻塞主线程

问题来了:不阻塞主线程,难道Node.js是多线程的?

结论是:Node.js是单线程的Node.js是单线程的Node.js是单线程的!

那为啥上面说到不阻塞主线程??

主线程 外是不是还有"副线程"啊

不是这样的,下面的总结很重要,建议全文背诵:

总结-单线程的Node.js

  1. Node.js 是单线程的:所有 JavaScript 代码(包括用户代码和 Node.js 核心模块中的 JavaScript 部分)都在主线程中运行。
  2. Node.js 通过非阻塞 I/O 和事件循环,使得 Node.js 的主线程不会被 I/O 操作阻塞,从而能够高效地处理高并发任务。也就是说,当Node.js要读一个一亿个字的txt文本文件,Node.js 会将这个任务交给底层的异步 I/O 系统 (具体指"操作系统提供的异步 I/O 接口"。在 Windows 系统中,操作系统提供的异步 I/O 接口主要通过 I/O 完成端口(IOCP)重叠 I/O(Overlapped I/O) 来实现。这些机制使得 Node.js 能够高效地处理异步操作)来处理。(我们作为开发者大部分情况下不需要去了解如此底层的东西,只需要知道到达这一层级,属于操作系统层面的内容。我们重点掌握Node.js提供的异步API即可------如文件模块fs、timers等等)主线程不会等待文件读取完成,而是继续执行后续的代码。一旦文件读取完成,事件循环会触发一个回调函数来处理读取到的数据,从而避免了主线程被长时间的 I/O 操作阻塞。

最后

如果你忘记了前面的全部内容,问题不大,只需记住:Node.js是单线程的!!

相关推荐
海上彼尚1 小时前
Go之路 - 7.go的结构体
开发语言·后端·golang
源代码•宸6 小时前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
It's now6 小时前
Spring AI 基础开发流程
java·人工智能·后端·spring
计算机毕设VX:Fegn08956 小时前
计算机毕业设计|基于springboot + vue图书商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
哆啦A梦15887 小时前
商城后台管理系统 03 登录布局
javascript·vue.js·elementui
曼巴UE57 小时前
UE FString, FName ,FText 三者转换,再次学习,官方文档理解
服务器·前端·javascript
selt7917 小时前
Redisson之RedissonLock源码完全解析
android·java·javascript
夕颜1118 小时前
BeeAI 框架学习记录
后端
行走的陀螺仪8 小时前
高级前端 Input 公共组件设计方案(Vue3 + TypeScript)
前端·javascript·typescript·vue·组件设计方案
极市平台8 小时前
骁龙大赛-技术分享第5期(上)
人工智能·经验分享·笔记·后端·个人开发