编辑
2023-08-02
Nodejs
00
请注意,本文编写于 476 天前,最后修改于 476 天前,其中某些信息可能已经过时。

目录

全局对象是什么?
常见的全局对象属性和方法
dirname和filename
setTimeout和setInterval
process
require和module.exports
global对象的自定义属性
Nodejs全局对象global和前端JavaScript中全局对象window的异同点
共同点
不同点
总结

今天我们将探讨Nodejs中的全局对象,这是Nodejs中重要且有趣的知识点。我们将通过生动形象的例子和风趣的风格来深入理解这些概念,并比较Nodejs中的全局对象与前端JavaScript中的全局对象之间的异同点。

全局对象是什么?

Nodejs环境中,有一个全局对象global,它在所有模块中都是可见的,类似于前端JavaScript中的window全局对象。然而,不同于浏览器环境,Nodejs中没有浏览器窗口,所以没有类似window这样的对象。而是使用global来提供类似的功能。

js
// app.js console.log(global);

Nodejs中,当我们运行上述代码时,会输出一个包含许多全局属性和方法的对象。这些全局属性和方法是Nodejs运行时提供的基础功能。

image.png

常见的全局对象属性和方法

__dirname和__filename

__dirname是一个字符串,表示当前执行脚本所在的目录的绝对路径。而__filename则表示当前执行脚本的文件名(包含绝对路径)。

js
// app.js console.log(__dirname); console.log(__filename);

运行 node app.js,输出如下:

image.png

setTimeout和setInterval

Nodejs中,我们可以使用setTimeoutsetInterval方法来设置定时器。这两个方法在前端JavaScript中也是常见的。

js
// app.js console.log("开始"); setTimeout(() => { console.log("这是一个延迟了2s的信息"); }, 2000); setInterval(() => { console.log("这个信息每过1s都会发送一次"); }, 1000);

运行 node app.js,输出如下:

image.png

process

process是一个全局对象,提供与当前Nodejs进程相关的信息和控制功能。

js
// app.js console.log(process.pid); // 当前进程的PID(进程ID) console.log(process.platform); // 当前操作系统平台 console.log(process.version); // Node.js的版本号

运行 node app.js,输出如下:

image.png

require和module.exports

Nodejs中,我们使用require方法来引入其他模块。module.exports则用于导出当前模块的功能。

js
// math.js const add = (a, b) => a + b; module.exports = { add }; // app.js const math = require('./math'); console.log(math.add(2, 3)); // 输出 5

运行 node app.js,输出如下:

image.png

global对象的自定义属性

除了上述内置属性和方法,我们也可以在global对象上定义自己的属性。

js
// customGlobal.js global.customMessage = "Hello, 我是一个自定义的global属性";
js
// app.js require('./customGlobal'); console.log(global.customMessage); // 输出 "Hello, 我是一个自定义的global属性"

请注意,虽然在某些情况下全局变量可能很方便,但应谨慎使用全局变量,因为它们可能导致命名冲突和代码维护问题。

运行 node app.js,输出如下:

image.png

Nodejs全局对象global和前端JavaScript中全局对象window的异同点

共同点

无论是Nodejs中的全局对象global还是前端JavaScript中的全局对象window,它们都提供了全局作用域,并且可以在任何地方访问。

不同点

最显著的不同是,前端JavaScript中的window对象提供了许多与浏览器窗口和DOM相关的功能,比如documentnavigator等。而Nodejs中的global对象主要提供了与服务器和操作系统相关的功能,比如processrequire等。

此外,Nodejs中的全局对象没有window的概念,因为Nodejs是基于V8引擎的JavaScript运行时,没有浏览器的窗口概念。相反,Node.js提供了许多与服务器端开发相关的功能,比如文件系统访问、网络请求等。

总结

全局对象是Nodejs中非常重要的概念,它为我们提供了许多有用的功能和属性。通过对Nodejs中的全局对象深入了解,我们可以更好地利用Nodejs构建强大的服务器端应用程序。同时,通过与前端JavaScript中的全局对象进行比较,我们也能更清楚地理解它们之间的异同点。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:CreatorRay

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!