文章目录
- 🌟前言
- 🌟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!
✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!