process 对象是node.js 中一个很重要的对象。
process 即进程,这个对象里面包含了很多与进程相关的方法。
下面这段,是官网 https://nodejs.org/api/process.html 的介绍
The process
object is a global
that provides information about, and control over, the current Node.js process. As a global, it is always available to Node.js applications without using require()
. It can also be explicitly accessed using require()
:
const process = require('process');
可见,process 对象是一个全局对象,不用写require ,直接使用即可。
下面介绍process 中几种常用的属性与方法。
首先是参数相关: argv, argv0, execArgv, execPath . Node.js 在启动的时候,想看启动脚本相关的参数(经常会通过启动脚本传递一些参数)
下面我们分别打印一下
argv 的话可以把 传入的参数(文件名后面)获取。argv0 的话就是 node,不常用。execArgv 能把文件名前面的参数获取出来。execPath 是执行脚本的地址。
const {argv, argv0, execArgv, execPath } = process;
console.log("argv is ", argv);
console.log("argv0 is ", argv0);
console.log("execArgv is ", execArgv);
console.log("execPath is ", execPath);
接下来是 env 属性。
const { env } = process;
console.log(env);
然后,它会把系统的一些信息打印出来。
接下来是process 的 cwd 方法
console.log(process.cwd());
接下来是 process 的 nextTick 方法
它与Global 的setImmediate 方法很相似。
setImmediate 是一个异步执行的方法,指当前回合的事件循环(Event Loop)结束后,立即执行的一个方法。当前任务执行完后,下一个任务是它。(一般使用它)。
process.nextTick 方法的话,是当前事件队列中正在执行的代码执行完后,就执行它。当前任务队尾下一任务之前。
我们写下,下面的代码。nextTick 会比 setImmediate 先执行。
setImmediate( () => {
console.log("setImmediate");
}
process.nextTick( () => {
console.log("nextTick");
})
setImmediate( () => {
console.log("setImmediate");
});
setTimeout( () => {
console.log("setTimeout");
},0);
process.nextTick( () => {
console.log("nextTick");
});