本文小编为大家详细介绍“node.js的特性是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“node.js的特性是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
nodejs有三个特性:1、服务器端;Nodejs运行在服务器端,为Javascript提供运行环境的环境服务。2、非阻塞异步;Nodejs采用了非阻塞型I/O机制,在做I/O操作的时候不会造成任何的阻塞。3、事件驱动;当进来一个新的请求的时,请求将会被压入一个事件队列中,然后通过一个循环来检测队列中的事件状态变化,如果检测到有状态变化的事件,那么就执行该事件对应的处理代码。
本教程操作环境: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.js的特性是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。