首页 > 编程语言 >浅谈 Node.js

浅谈 Node.js

时间:2023-05-11 21:55:48浏览次数:46  
标签:Node 浅谈 -- js 事件 IO CPU

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 --和获得焦点事件相对应!
  • 文档载入事件 onl oad --当文档被载入是触发事件。通常也叫加载事件(加载运行) 一般用来设置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等。

参考文档

前端爱好者

标签:Node,浅谈,--,js,事件,IO,CPU
From: https://www.cnblogs.com/bradenhan/p/17392376.html

相关文章

  • 浅谈类型
    -----------部分内容摘抄自《TypeScript编程》-----------------1.any代表不确定变量的值属于什么类型,声明它是任意类型,可以赋予任意类型的值,但这就意味着ts倒退回js了,不建议使用。如果不声明类型,默认也是any。lettestAny:any;2.unknown同any,代表不确定变量的值属于什......
  • json在前端的使用
    调用接口后一般传递的都是json格式的数据,这个json格式的数据吗可能会有多层嵌套,如何获取这个最内层的嵌套value值便是关键。而数据解析放在前端便更加的简单,可以像数组一样使用但是需要解决以下问题:1.数据在后端的时候已经是json格式的object,如何异步发送这个json数据到前端(最新......
  • web游览器的标签页仿 ios mac 苹果的墓碑机制 (js代码)
    背景:本来项目开发系统防挂机功能,在其余游览器中均可以使用。但是呢在苹果的safair游览器中会出现几率失效,最后经过排查发现是苹果的墓碑机制导致。即:此标签页活跃,其他标签页假死。然后就导致防挂机失效了。原理:假如当前游览器中有3个标签页分别是A,B,C,每个标签页都有倒计时。正......
  • JScrollPane
    JScrollPane组件()功能介绍:    当容器的显示区域不足以同时显示所有组件的时候,滚动面版JScrollPane(后省略为JS)可以通过滚动的方式将组件的内容展示出来。使用方法:JS通过将一些组件先添加到JPanel中,再将JPanel添加到JS上,而JTextArea、JList、JTable等组件都没有自......
  • js过滤粘贴内容
    <html><head><title>HtmlEditorFilter</title><styletype="text/css">.editor{border:1pxsolid#333333;}</style></head><body><iframesrc="iframeblankpage.html"id="e......
  • inputstream转json
    inputstream是一个Java中的输入流,它允许从源读取数据。如果要将inputstream转换为JSON,需要使用相应的解析器,例如GSON或Jackson。以下是使用GSON的示例代码:InputStreaminputStream=...;Gsongson=newGson();JsonReaderreader=newJsonReader(newInputStreamReader(in......
  • node_models里面的依赖有错误怎么解决
    1,发现问题最近发现公司有个文档的网站打开很慢,通过浏览器的network查看资源,发现是bootstrap的css和js文件加载不出来,看了一下是国外的cdn,不稳定。2,查找原因知道了访问慢的原因,我们就去项目里面看看这个bootstrap的cdn是哪里引入的,直接进入项目的node_models文件夹,执行grep-lr......
  • 详解ASEMI代理亚德诺ADV7125JSTZ330芯片设计与应用
    编辑-ZADV7125JSTZ330是一款音视频芯片,其优秀的性能指标与广泛的应用场景获得了市场的青睐。本文从设计、功能、性能以及应用四个方面详细阐述ADV7125JSTZ330芯片的优势与特点,旨在更好的帮助读者了解这款芯片。 一、设计方面ADV7125JSTZ330使用了特殊的器件选型以及完整而成......
  • cJson学习(二)
    已剪辑自:https://blog.csdn.net/ZRXSLYG/article/details/122541036?spm=1001.2101.3001.6650.17&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-17-122541036-blog-123806149.235^v35^pc_relevant_default_base&depth_1-utm_......
  • https://pengchenggang.github.io/vuejsdev-com-github 备份发布
    https://pengchenggang.github.io/vuejsdev-com-github备份发布现在还没有解决的就是开clash,代码提交不上去,只能关了提,但是关了提交,也得赶运气。提交代码体验很差~......