乐趣区

关于前端:浅谈-Nodejs

Node.js 是什么?

Node.js® 是一个开源、跨平台的 JavaScript 运行时环境。

官网:https://nodejs.org/zh-cn

更多精彩内容,请 微信搜寻“前端爱好者 戳我 查看

Node.js ≠ JavaScript

Node.js 中,没有 BOM 和 DOM。

Nodejs 不是一门语言,只是一个跨平台的 JavaScript 运行时环境。

Node.js 的个性

非阻塞 IO 模型

IO = input + output

计算机程序是依照程序逐条执行,如图:

一条条执行,直到程序完结。

阻塞 IO

阻塞式 IO 在进行数据读取时,如果内核中没有数据(发送端可能还没有发送数据或者发送的数据还没有达到),此时内核就开始期待数据,同时用户过程也进入阻塞状态,整个过程就会被挂起期待,不能做其余的事件。

当有数据达到内核时,内核期待完结,将数据从内核拷贝到用户区,用户过程完结阻塞,从挂起状态转为运行状态。

非阻塞式 IO

在应用零碎调用进行数据读取时,如果内核中没有数据达到,此时内核会进行期待。然而与阻塞式 IO 不同的是,此时的 用户过程并不会被阻塞,不会被挂起,而是出错返回。

事件驱动

web 前端中事件驱动是指在两个物体之间产生了交互行为,驱使两个物体的一方做出了相应的行为或动作;

事件驱动是指在继续事务管理过程中,进行决策的一种策略,即追随以后工夫点上呈现的事件,调动可用资源,执行相干工作,使一直呈现的问题得以解决,避免事务沉积。

javaScript 中的事件驱动

javascript 中的事件驱动是通过 鼠标 热键 的动作引发的 次要事件如下:

  • 鼠标单击事件 onclick 如:(<input type="button" value="鼠标单击" onclick="执行语句. 解决" />)
  • 内容扭转事件 onchange 如:(<input type="text" onchange="触发的内容" />)
  • 选中事件 onselect – 当 text 或 textarea 的内容被高亮显示后触发该事件
  • 取得焦点事件 onFocus – 当对象取得焦点时产生
  • 失去焦点事件 onBlur – 和取得焦点事件绝对应!
  • 文档载入事件 onload – 当文档被载入是触发事件。通常也叫加载事件(加载运行) 个别用来设置 cookie
  • 卸载文档事件 onunload – 和加载文档事件对应。当 web 页面退出时产生,通常更新 cookie 的值
  • 鼠标右键菜单性能事件 oncontextmenu – 能够屏蔽鼠标右键 时应用

Node.js 劣势

Node.js 应用程序的示例

Node.js 最见的 Hello World 示例是 Web 服务器:

const http = require("http")

const hostname  "127.8.8.1"
const port = 3088

const server = http.createServer((req, res) => {
    res.statusode = 200
    res.setHeader('Content-Type", "text/plain')
    res.end('你好世界 \n')
})

server.listen(port, hostname, () =>{console.log(`~ 服务器运行在 http://$(hostname}:$port}`)
)

完完全全是 javaScript 语法

IO 密集 VS CPU 密集

IO 密集型(I/O bound)

IO 密集型指的是零碎的 CPU 性能绝对硬盘、内存要好很多,此时,零碎运作,大部分的情况是 CPU 在等 I /O (硬盘 / 内存) 的读 / 写操作,此时 CPU Loading 并不高。

CPU 密集型(CPU-bound)

CPU 密集型也叫 计算密集型,指的是零碎的硬盘、内存性能绝对 CPU 要求很多,此时,零碎运作大部分的情况是 CPU Loading 100%,CPU 要读 / 写 I /O(硬盘 / 内存),I/ O 在很短的工夫就能够实现,而 CPU 还有许多运算要解决,CPU Loading 很高。

高并发

高并发(High Concurrency)通常是指,零碎可能同时并行处理很多申请。

高并发相干罕用的一些指标有响应工夫(Response Time),吞吐量(Throughput),每秒查问率 QPS(Query Per Second),并发用户数等。

过程,是计算机中的程序对于某数据汇合上的一次运行流动,是零碎进行资源分配和调度的根本单位。

线程 的是过程内一个绝对独立的可调度的执行单元。

多任务执行 — 线程申明周期

Node 是单线程还是多线程?

Node 是单线程。因为 JavaScript 是单线程

单线程是 JavaScript 运行环境的单线程,NodeJs 没有给 JavaScript 提供新线程的能力。

最终操作是通过底层以及它的事件驱动来实现的。

Node.js 采纳事件驱动和异步 I / 0 的形式,实现了一个单线程、高并发的运行时环境。

异步 I / O 执行程序

NodeJs 是高性能的

  • web 场景的高并发
  • IO 密集

NodeJs 本地代码构建

运行 react 和 vue 的本地服务器,本地化代码转换。

gulp,webpack,vite 等。

参考文档

  • https://blog.csdn.net/weixin_43111232/article/details/122567720
  • https://www.php.cn/website-design-ask-495272.html
  • https://blog.csdn.net/youanyyou/article/details/78990156
退出移动版