Node.js全局对象
Posted 橘猫吃不胖~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js全局对象相关的知识,希望对你有一定的参考价值。
Node.js全局对象
- 1 概述
- 2 __filename(两个下划线)
- 3 __dirname(两个下划线)
- 4 setTimeout(fn,ms)
- 5 clearTimeout(t)
- 6 setInterval(cb, ms)
- 7 clearInterval(t)
- 8 process对象
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全局对象的主要内容,如果未能解决你的问题,请参考以下文章