> 文章列表 > Node【Global全局对象】之【Process】

Node【Global全局对象】之【Process】

Node【Global全局对象】之【Process】

文章目录

  • 🌟前言
  • 🌟Process
  • 🌟process属性
    • 🌟process.env
  • 🌟process方法
  • 🌟process事件
    • 🌟uncaughtException
  • 🌟写在最后


在这里插入图片描述

🌟前言

哈喽小伙伴们,新的专栏 Node 已开启;这个专栏里边会收录一些Node的基础知识和项目实战,今天带领大家初识一下 Node.js中的Global全局对象Process让我们一起来看看吧🤘

🌟Process

process是一个全局变量,即global对象的属性,它用来操作或者是获取或者查看当前进程的相关信息。

我们都知道,进程计算机系统进行资源分配和调度的基本单位,是操作系统结构的基础,是线程的容器。启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。

当我们启动一个js文件,实际就是开启了一个服务进程,每个进程都拥有自己的独立空间地址、数据栈,像另一个进程无法访问当前进程的变量、数据结构,只有数据通信后,进程之间才可以数据共享。

由于JavaScript是一个单线程语言,所以通过node xxx.js启动一个文件后,只有一条主线程。

🌟process属性

属性 描述
process.argv 是用来获取或查看当前进程的相关信息。
process.arch 获取程序运行平台处理器架构 ‘x64’、‘x86’
process.platform 运行程序所在的平台系统 ‘darwin’, ‘freebsd’, ‘linux’, ‘sunos’ 或 ‘win32’
process.version Node的版本
process.versions 包含了Node的版本和依赖
process.env process.env 是 Node.js 中的一个环境对象。其中保存着系统的环境的变量信息。

🌟process.env

process.env 是 Node.js 中的一个环境对象。其中保存着系统的环境的变量信息。NODE_ENV 就是其中的一个环境变量。这个变量主要用于标识当前的环境(生产环境,开发环境)。默认是没有这个环境变量的,需要自己手动配置。

使用频率很高,node服务运行时,时常会判断当前服务运行的环境,如下所示

if(process.env.NODE_ENV === 'production'){console.log('生产环境');
}else{console.log('非生产环境');
}

🌟process方法

方法 描述
process.cwd() 查看当前进程的工作目录
process.chdir() 更改当前进程的工作目录
process.memoryUsage() 内存使用情况 heapTotal代表已申请到的堆内存,heapUsed当前使用的内存,rss(resident set size)进程的常驻内存(单位字节byte)
process.nextTick(callback) 将任务放到当前一轮事件循环(Event Loop)的尾部。
process.uptime() 返回 Node 已经运行的秒数。
process.on() 用来监听事件,并指定回调函数。

🌟process事件

方法 描述
uncaughtException 当Nodejs出现异常,可以通过该事件捕获系统异常

🌟uncaughtException

在你接触node之后,你就会发现那些影响了主事件循环的异常会把整个node进程宕掉的。这会是相当严重的问题,所以process提供了另外一个有用的事件uncaughtException来解决这个问题,他会把异常抓取出来供你处理。

process.on('uncaughtException', function (err) {console.log('Caught exception: ' + err);
});
setTimeout(function () {console.log('This will still run.');
}, 500);
// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
console.log('This will not run.');

在上面的例子中,我们注册了uncaughtException事件来捕捉系统异常。执行到nonexistentFunc()时,因为该函数没有定义所以会抛出异常。因为Javascript是解释性的语言,nonexistentFunc()方法上面的语句不会被影响到,他下面的语句不会被执行。所以他的执行结果如下:

Caught exception: ReferenceError: nonexistentFunc is not defined
This will still run.

示例:捕获服务器异常

var http = require('http');
var server = http.createServer(function(req,res) {res.writeHead(200, {});res.end('response');badLoggingCall('sent response');console.log('sent response');
});
process.on('uncaughtException', function(e) {console.log(e);
});
server.listen(8080);

在这里例子中我们创建了一个Web服务器,当处理完请求之后,我们会执行badLoggingCall()方法。因为这个方法不存在,所以会有异常抛出。但是我们注册的uncaughtException事件会对异常做出处理,这样服务器不会受到影响得以继续运行。我们会在服务器端记录错误日志。

[ReferenceError: badLoggingCall is not defined]

🌟写在最后

更多Node知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!