2、说说对Node中的process的理解?有哪些常用方法?

在这里插入图片描述

一、是什么

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

我们都知道,进程是计算机系统进行资源分配和调度的基本单位,是操作系统结构的基础,是线程的容器

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

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

二、属性与方法

关于process常见的属性有如下:

  • process.env:环境变量,例如通过process.env.NODE_ENV获取不同环境项目配置信息
  • process.nextTick:这个在谈及EventLoop时经常会提到
  • procee.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.stdrr标准错误输出
  • process.title:指定进程名称,有的时候需要给进程指定一个名称

下面我们在稍微介绍下某些方法的使用:

process.cwd()

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

一个Node模块A通过npm发布,项目B中使用了模块A。在A中需要操作B项目下的文件时,就可以用process.cwd()来获取B项目的路径。

process.argv

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

  • 0:Node路径(一般用不到,直接忽略)
  • 1:被执行的JS文件路径(一般用不到,直接忽略)
  • 2~n:真是传入的命令参数

所以,我们只要从process.argv[2]开始获取就好了。

const args = process.argv.slice(2);

process.env

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

一般我们会在process.env上挂载一些变量标识当前的环境,比如最常见的用process.env.NODE_ENV区分developmentproduction

vue-cli的源码中也经常会看到process.env.VUE_CLI_DEBUG标识当前是不是DEBUG模式

process.nextTick()

我们知道NodeJs是基于事件轮询,在这个过程中,同一时间只会处理一件事情。

在这种处理模式下,process.nextTick()就是定义出一个动作,并且让这个动作在下一个事件轮询的时间点上执行。

例如下面例子将一个foo函数在下一个时间点调用

function foo(){
	consol.log('foo');
}

process.nextTick(foo());
console.log('bar');

输出结果为bar``foo
虽然下述方式也能实现同样效果:

setTimeOut(foo,0);
console.log('bar');

两者区别在于:

  • process.nextTick()会在这一次event loop的call stack清空后(下一次event loop开始前)在奥永callback
  • setTimeout()是并不知道什么时候call stack清空的,所以何时调用callback函数是不确定的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值