概念

是一个基于Chrome V8引擎的JavaScript运行环境,让JavaScript 运行在服务端的开发平台。Node. js是一个事件驱动、非阻塞式I/O的模型,轻量而又高效。浏览器是js的前端运行环境

node.js是js的后端运行环境。

优缺点

优点

处理高并发场景性能更佳

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

缺点

不适合CPU密集型应用(如复杂的数学计算)

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

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

适用场景

高并发、实时聊天、实时消息推送、客户端逻辑强大的SPA(单页面应用程序)。

应用场景

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

第二大类:基于web、canvas等多人联网游戏

第三大类:基于web的多人实时聊天客户端、聊天室、图文直播

第四大类:单页面浏览器应用程序

第五大类:操作数据库、为前端和移动端提供基于json的API

node与Javascript的区别

node-java性能 node.js性能_node-java性能

为什么要用Node.js

(1)简单, Node. js用 JavaScript、JSON进行编码,简单好学。

(2)功能强大,非阻塞式I/O,在较慢的网络环境中,可以分块传输数据,事件驱动,擅长高并发访问。

(3)轻量级, Node. js本身既是代码又是服务器,前后端使用同一语言。

(4)可扩展,可以轻松应对多实例、多服务器架构,同时有海量的第三方应用组件。

  • 非阻塞I/O是指以异步来执行函数,先执行同步任务,耗时任务放在事件队列中,以此轮询执行
  • 高并发是指许多用户同时访问相同 API接口或 URL地址。这种情况常常发生在活跃用户数量大、用户聚集程度高的业务场景中。

Node. js 有哪些全局对象?

在浏览器 JavaScript 中,通常window 是全局对象, 而 Nodejs中的全局对象是 global,global全局对象则在全局作用域中,任何全局变量、函数、对象都是该对象的一个属性值

全局对象分类

1.真正的全局对象

Buffer

可以处理二进制以及非Unicode编码的数据

process

进程对象,提供有关当前进程的信息和控制

console

最常用的输入内容的方式:console.log/console. info、console.error/console.warning、console.time/console.timeEnd 、console.trace、console .table。

clearInterval、setInterval

设置定时器与清除定时器

clearTimeout、setTimeout

设置延时器与清除延时器

global

全局命名空间对象,process、console、setTimeout等都有放到global中

2.模块级别的全局变量

__dirname

获取当前文件所在的路径,不包括后面的文件名

__filename

获取当前文件所在的路径和文件名称,包括后面的文件名称

exports

module.exports 用于指定一个模块所导出的内容,即可以通过 require() 访问的内容

module

对当前模块的引用,通过module.exports 用于指定一个模块所导出的内容,即可以通过 require() 访问的内容

require

用于引入模块、 JSON、或本地文件。 可以从 node_modules 引入模块。

Node.js核心模块

EventEmitter 、Stream、FS、Net和全局对象等。

对 Node.js 中的 process 的理解?有哪些常用方法

概念

process 对象是一个全局变量,提供了有关当前 Node.js进程的信息并对其进行控制

属性

process.env:环境变量,例如通过 `process.env.NODE_ENV 获取不同环境项目配置信息

process.nextTick:这个在谈及 EventLoop 时经常为会提到

process.pid:获取当前进程id

process.ppid:当前进程对应的父进程

process.cwd():获取当前进程工作目录,

process.platform:获取当前进程运行的操作系统平台

process.uptime():当前进程已运行时间,例如:pm2 守护进程的 uptime 值

进程事件: process.on(‘uncaughtException’,cb) 捕获异常信息、 process.on(‘exit’,cb)进程推出监听

三个标准流: process.stdout 标准输出、 process.stdin 标准输入、 process.stderr 标准错误输出

process.title 指定进程名称,有的时候需要给进程指定一个名称

方法

process.cwd()

返回当前 Node进程执行的目录

process.argv

在终端通过 Node 执行命令的时候,通过 process.argv 可以获取传入的命令行参数,返回值是一个数组

process.env

返回一个对象,存储当前环境相关的所有信息,一般很少直接用到。

process.nextTick()

NodeJs是基于事件轮询,在这个过程中,同一时间只会处理一件事情,在这种处理模式下,process.nextTick()就是定义出一个动作,并且让这个动作在下一个事件轮询的时间点上执行

Node. js中的异步和同步

Node.js是单线程的,异步是通过一次次的循环事件队列来实现的。同步则是阻塞式的IO,这在高并发环境中会是一个很大的性能问题,所以同步一般只在基础框架启动时使用,用来加

载配置文件、初始化程序等。