Node.js全局对象

Posted 橘猫吃不胖~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js全局对象相关的知识,希望对你有一定的参考价值。

Node.js全局对象

1 概述

Node.js的全局对象是具有全局性的,它们可在所有的模块中应用。我们并不需要在应用中引用这些对象,而可以直接使用它们。

2 __filename(两个下划线)

__filename:表示正在执行的代码的文件名,结果显示此代码文件的绝对路径+文件名。

示例:创建一个js文件,并命名为main.js

console.log("该文件名是:", __filename);

3 __dirname(两个下划线)

__dirname:代表当前正在执行的代码的目录名(路径)

示例代码:

console.log("路径名", __dirname);

4 setTimeout(fn,ms)

setTimeout(fn,ms):定时器,表示至少间隔多少毫秒ms后执行回调函数fn。实际延迟取决于外部因素,如OS计时器粒度和系统负载。计时器不能跨越超过24.8天。该函数返回一个表示可用于清除定时器的对象。

示例代码:

function print() 
    console.log("橘猫吃不胖");

// 2s后执行函数print
setTimeout(print, 2000);

2秒后在终端输出以下内容:

5 clearTimeout(t)

clearTimeout(t):清除定时器,用来停止由setTimeout()创建的定时器,t表示由setTimeout()函数返回的计时器。

示例代码:

function print() 
    console.log("橘猫吃不胖");

// 2s后执行函数print
let t = setTimeout(print, 2000);
// 停止计时器
clearTimeout(t);

6 setInterval(cb, ms)

setInterval(cb, ms):表示至少多少毫秒ms后重复运行回调函数cb。实际延迟取决于外部因素,如OS计时器粒度和系统负载。计时器不能跨越超过24.8天。

示例代码:

function print() 
    console.log("橘猫吃不胖");

// 每隔1s就执行函数print
setInterval(print, 1000);


停止该程序在终端输入ctrl+C,否则就会一直执行下去。

7 clearInterval(t)

clearInterval(t):清除由setInterval()创建的定时器,t表示由setTimeout()函数返回的计时器。

示例代码:

function print() 
    console.log("橘猫吃不胖");

// 每隔1s就执行函数print
let t = setInterval(print, 1000);
// 停止计时器
clearInterval(t);

8 process对象

process对象是 Node 的一个全局对象,提供当前 Node进程的信息(当前正在执行的代码的全部信息)。它可以在脚本的任意位置使用,不必通过require命令加载。该对象部署了EventEmitter接口。

8.1 属性

process对象提供了一系列属性,用于返回系统信息。

属性说明
process.argv返回一个数组,成员是当前进程的所有命令行参数。
process.env返回一个对象,成员为当前Shell的环境变量。
process.installPrefix返回一个字符串,表示 Node 安装路径的前缀。
process.pid返回一个数字,表示当前进程的进程号。
process.platform返回一个字符串,表示当前的操作系统,比如Linux。
process.title返回一个字符串,默认值为node,可以自定义该值。
process.version返回一个字符串,表示当前使用的 Node 版本。

示例代码:

console.log("当前进程命令行参数:", process.argv);
// 当前进程命令行参数: [ 'D:\\\\Node\\\\node.exe', 'E:\\\\练习\\\\1.6\\\\main.js' ]

console.log("当前进程号:", process.pid);
// 当前进程号: 18556

console.log("操作系统:", process.platform);
// 操作系统: win32

console.log("当前Node版本:", process.version);
// 当前Node版本: v16.13.1

1、process.stdout:返回一个标准输出对象。该对象中有一个方法write,作用与console.log类似,可用在标准输出向用户显示内容。

示例代码:

process.stdout.write("橘猫吃不胖");


2、process.stdin:返回一个标准输入对象

示例代码:

process.stdout.write("请输入姓名:");
process.stdin.on("data", (data) => 
    process.stdout.write("输入的数据是:" + data.toString().trim());
    process.exit(0); // 结束进程
)


3、process.stderr:返回一个标准错误对象

示例代码:

process.stderr.write("错误");

8.2 方法

方法说明
process.chdir()切换工作目录到指定的目录,作用类似于DOS的cd指令
process.cwd()返回运行当前脚本的工作目录的路径
process.exit()退出当前进程。它可以接受一个数值参数,如果参数大于0,表示执行失败;如果等于0表示执行成功。
process.getgid()返回当前进程的组ID(数值)。
process.getuid()返回当前进程的用户ID(数值)。
process.nextTick()指定回调函数在当前执行栈的尾部、下一次Event Loop之前执行。
process.on()监听事件。
process.setgid()指定当前进程的组,可以使用数字ID,也可以使用字符串ID。
process.setuid()指定当前进程的用户,可以使用数字ID,也可以使用字符串ID。

1、process.chdir(),process.cwd()

示例代码:

console.log("切换到目录:", process.chdir("E:/练习/1.6/src"));
// 切换到目录: undefined

console.log("当前工作路径:", process.cwd());
// 当前工作路径: E:\\练习\\1.6\\src

2、process.on()
process对象部署了EventEmitter接口,可以使用on方法监听各种事件,并指定回调函数。

process支持的事件有下面这些:
(1)data事件:数据输出输入时触发
(2)SIGINT事件:接收到系统信号SIGINT时触发,主要是用户按Ctrl + c时触发。
(3)SIGTERM事件:系统发出进程终止信号SIGTERM时触发
(4)exit事件:进程退出前触发

8.3 事件(exit)

当前进程退出时,会触发exit事件,可以对该事件指定回调函数。

// 程序结束显示:再见
process.on("exit", function () 
    console.log("再见");
)


例如:进程退出时,显示一段日志。

process.on("exit", code => console.log("程序退出:" + code))


注意:此时回调函数只能执行同步操作,不能包含异步操作,因为执行完回调函数,进程就会退出,无法监听到回调函数的操作结果。

以上是关于Node.js全局对象的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 全局对象

Node.js 全局对象

Node.js 全局对象

Node.js的全局对象和全局变量

Node.js的全局对象和全局变量

每日灵魂一问-node.js的全局对象有哪些?