>首页> IT >

天天速讯:node.js有哪些特性

时间:2022-07-18 17:59:08       来源:PHP中文网

本教程操作环境:windows7系统、nodejs16版,DELL G3电脑。

什么是 Node.js?


(资料图片)

Node.js 是一个开源与跨平台的 JavaScript 运行时环境,或者说,是一个平台。

在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能。

可以理解为 Node.js 就是一个服务器端的、非阻塞式I/O的、事件驱动的 JavaScript运行环境。

就如上述描述,不难得出,Node.js 有三个特性 : 服务器端、 非阻塞式I/O、事件驱动。接下来,我们就三个特性进行剖析:

① 服务器端:字面意思,Node.js 运行在服务器端,为 Javascript提供运行环境的环境服务。

② 非阻塞异步: Node.js 采用了非阻塞型 I/O 机制,在做 I/O 操作的时候不会造成任何的阻塞,当完成之后,以时间的形式通知执行操作。

例如在执行了访问数据库的代码之后,将立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率。

③ 事件驱动: 事件驱动就是当进来一个新的请求的时,请求将会被压入一个事件队列中,然后通过一个循环来检测队列中的事件状态变化,如果检测到有状态变化的事件,那么就执行该事件对应的处理代码,一般都是回调函数

比如读取一个文件,文件读取完毕后,就会触发对应的状态,然后通过对应的回调函数来进行处理

知识拓展:

node.js 是 一个单线程服务(JS本来无论在浏览器端还是服务端都是单线程)。同时,拥有世界最大的开源库生态系统: npm。

Node.js 有哪些优缺点?

> 优点

处理高并发场景性能更佳

适合I/O密集型应用,值的是应用在运行极限时,CPU占用率仍然比较低,大部分时间是在做 I/O硬盘内存读写操作

> 缺点

因为 Node.js 是单线程,带来的缺点有:

不适合CPU密集型应用

只支持单核CPU,不能充分利用CPU

可靠性低,一旦代码某个环节崩溃,整个系统都崩溃。

Node.js 能做什么?

提供数据给浏览器展示保存用户提交过来的数据

数据统计与分析

Node.js 的 模块系统

Node.js中没有全局作用域的概念; 在 Node.js中,只能通过 require方法来加载执行多个 JavaScript脚本文件;require加载只能是执行其中的代码,文件与文件之间由于是模块作用域,所以不会有污染的问题;

模块完全是封闭的

外部无法访问内部

内部也无法访问外部

模块作用域虽然可以带来了一些好处,可以加载执行多个文件,可以完全避免变量命名冲突污染的问题。 但是某些情况下,模块与模块是需要进行通信的。在每个模块中,都提供了一个对象:‘exports’,该对象默认是一个空对象。 在使用过程中,需要被外部访问使用的成员手动的挂载到 ’exports‘ 接口对象中, 然后谁来 ’require‘ 这个模块,谁就可以得到模块内部的 exports接口对象。

核心模块

核心模块是由 Node 提供的一个个的具名的模块,它们都有自己特殊的名称标识,例如:

fs:文件操作模块

http:网络服务构建模块

os:操作系统信息模块

path:路径处理模块

所有核心模块在使用的时候都必须手动的先使用 require方法来加载,然后才可以使用,例如: ‘var fs = require("fs")’

Node.js 应用场景

借助Nodejs的特点和弊端,其应用场景分类如下:

善于I/O,不善于计算。因为Nodejs是一个单线程,如果计算(同步)太多,则会阻塞这个线程;

大量并发的I/O,应用程序内部并不需要进行非常复杂的处理;

websocket配合,开发长连接的实时交互应用程序,即:实时通讯 ;

具体场景可以表现为如下:

① 用户表单收集系统、后台管理系统、实时交互系统、考试系统、联网软件、高并发量的web应用程序;

② 基于web、canvas等多人联网游戏;

③ 基于 web的多人实时聊天客户端、聊天室、图文直播;

④ 单页面浏览器应用程序;

⑤操作数据库、为前端和移动端提供基于json的API;

其实,Node.js能实现几乎一切的应用,只不过需要考虑的是 当前场景是否适合使用 Node.js, 使用 Node.js 是否 ” 最优解 “,需要考虑 性能问题。

更多node相关知识,请访问:nodejs 教程!

以上就是node.js有哪些特性的详细内容,更多请关注php中文网其它相关文章!

关键词: 事件驱动 应用程序 服务器端