Nodejs中的全局对象

news2025/1/18 17:04:50

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

全局对象是什么?

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

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

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

image.png

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

__dirname和__filename

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

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

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

image.png

setTimeout和setInterval

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

// app.js
console.log("开始");
setTimeout(() => {
  console.log("这是一个延迟了2s的信息");
}, 2000);

setInterval(() => {
  console.log("这个信息每过1s都会发送一次");
}, 1000);

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

image.png

process

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

// 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则用于导出当前模块的功能。

// 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对象上定义自己的属性。

// customGlobal.js
global.customMessage = "Hello, 我是一个自定义的global属性";
// 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中的全局对象进行比较,我们也能更清楚地理解它们之间的异同点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/829255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 6.0的新特性:多线程、客户端缓存与安全

2020年5月份,6.0版本。 面向网络处理的多IO线程可以提高网络请求处理的速度,而客户端缓存可以让应用直接在客户端本地读取数据,这两个特性可以提升Redis的性能。 细粒度权限控制让Redis可以按照命令粒度控制不同用户的访问权限,…

汽车智能化再掀新热潮!「中央计算架构」进入规模量产周期

中央计算区域控制的新一代整车电子架构,已经成为车企继电动化、智能化(功能上车)之后,新一轮竞争的焦点。 如果说智能化的1.0阶段,是智能驾驶智能座舱的争夺战;那么,即将进入的2.0阶段&#xff…

MacOS上配置docker国内镜像仓库地址

背景 docker官方镜像仓库网速较差,我们需要设置国内镜像服务 我的MacOS docker版本如下 设置docker国内镜像仓库地址 点击Settings点击Docker Engine修改配置文件,添加registry-mirrors {"builder": {"gc": {"defaultKeepS…

iOS——Block签名

首先来看block结构体对象Block_layout(等同于clang编译出来的__Block_byref_a_0) #define BLOCK_DESCRIPTOR_1 1 struct Block_descriptor_1 {uintptr_t reserved;uintptr_t size; };#define BLOCK_DESCRIPTOR_2 1 struct Block_descriptor_2 {// requi…

【ASP.NET MVC】生成页面(6)

本应该继续数据库访问的问题进行探讨,前文确实比较LOW。但本人认为:初学者需要解决的是快速了解知识路线的问题,所谓“生存问题”,所以,干脆把流程先走完。 一、页面生成 下面这张图在前面已经介绍过: 前…

AI时代数据库如何Ready?TiDB率先给出答案

当ChatGPT横空出世的那一刻,很多行业都为之一震,意识到变革时刻已经到来。 数据库是最早“觉醒”且付之行动的领域之一。业内普遍认为,大模型所呈现出的强大能力,让DataAI成为数据库领域的大势所趋。大模型与数据的同频共振&…

【POSIX信号量】

文章目录 1 :peach:POSIX信号量 :peach:2 :peach:信号量的接口介绍 :peach:2.1 :apple:初始化信号量:apple:2.2 :apple:销毁信号量:apple:2.3 :apple:等待信号量:apple:2.4 :apple:发布信号量:apple: 3 :peach:基于环形队列的生产者消费者模型 :peach:3.1 :apple:环形队列:appl…

插入排序讲解

插入排序(Insertion-Sort)一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表…

JDK8:Optional详解与源码分析,如何优雅的处理空指针

文章目录 一、Optional概述1、烦人的NullPointerException2、Optional简介 二、Optional使用1、创建Optional对象2、isPresent()与ifPresent()应用&源码解析3、get()应用&源码解析4、orElseThrow()应用&源码解析5、map()应用&源码解析6、flatMap()应用&源码…

string【2】模拟实现string类(超详解哦)

string模拟实现 引言(实现概述)string类方法实现默认成员函数构造函数拷贝构造赋值运算符重载析构函数 迭代器beginend 容量size、capacity、emptyreserveresize 访问元素operator[] 修改insert插入字符插入字符串 appendpush_backoperatoreraseclearswa…

BGP----边界网关路协议

目录 一,BGP相关的特点 二、BGP特点: 三、BGP数据包 四、BGP的工作过程 五、名词 六、BGP的路由黑洞问题 七、BGP的防环机制 –水平分割 八、BGP的基本配置: 1.直连的EBGP邻居关系建立 2.IBGP邻居关系建立 3.EBGP邻居间存在多条…

【NetCore】06-配置框架

文章目录 1.配置框架1.1 核心包1.2 配置框架核心类型1.3 配置框架扩展点 2.命令行配置提供程序2.1 支持的命令格式2.2 命令替换模式 3. 环境变量配置提供程序3.1 使用场景3.2 特性 4.文件配置提供程序4.1 文件配置提供程序4.2 特性 5.配置变更监听-配置热更新能力的核心5.1 场景…

客服如何通过微信接收消息通知-唯一客服文档中心

当我们在自己网站上嵌入对接了客服代码,我们想要通过微信接收访客的消息提醒通知,可以通过扫描客服后台的微信二维码,即时收消息通知提醒。 我们网站地址:gofly.v1kf.com 客服后台 后台主页面板,就展示了一个微信二维码…

PHP http请求封装使用(POST.GET,PUT,DELETE)

封装的 sendRequest() 函数是一个通用的发送请求函数&#xff0c;可以发送 POST、GET、PUT、DELETE 请求。下面对该函数的代码进行具体讲解&#xff1a; <?php function sendRequest($method, $url, $data null, $contentType multipart/form-data, $headers array(),…

无人驾驶实战-第一课(自动驾驶概述)

在七月算法上报了《无人驾驶实战》课程&#xff0c;老师讲的真好。好记性不如烂笔头&#xff0c;记录一下学习内容。 ————————————————————————————————————————— 无人驾驶汽车的定义&#xff1a; 无人驾驶汽车是可载人的移动智能机器…

【ASP.NET MVC】动态与静态网站(3)

一、区别 静态网页&#xff08;站&#xff09; 用户通过浏览器提交访问需求&#xff0c;需求可以是默认首页或者指定的网站中的某个页面&#xff0c;WEB服务器查找对应的网页&#xff0c;通过HTTP协议发送到客户端&#xff0c;完成访问。 特点&#xff1a;每次访问、不同角色…

视频监控综合管理平台EasyCVR修改参数提示database or disk is full是什么原因?

EasyDarwin开源流媒体视频EasyCVR安防监控平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析等能力。视频监控综合管理平台EasyCVR具备视频汇聚融合能力&#xff0c;平台基于云边端一体化架构&#xff0c;具有强大…

【MCU学习】GD32F427VG开发

&#xff08;一&#xff09;学习文档和例程 兆易创新GD32 MCU参考资料下载 1.GD232F4xx的Keil芯片支持包 2.标准固件库和示例程序 3.GD32F4xx_固件库使用指南_Rev1.2 4.用户手册&#xff1a;GD32F4xx_User_Manual_Rev2.8_CN 5.数据手册&#xff1a;GD32F427xx_Datasheet_Rev…

通信笔记——最小移频键控MSK

由2FSK→MSK存在以下几点&#xff1a; 1、如何实现已调信号的码元正交&#xff1b;2、如何实现相位连续&#xff0c;不突变。 1、以2FSK一般表示法出发&#xff0c;推导得出两种频率的约束关系 正交条件&#xff1a; 积化和差公式有&#xff1a; 当载波频率比较高&#xff…

类欧几里得算法学习笔记

偶然发现了学长发给我的一个学长的学长也是我的学长的一个数论 p p t ppt ppt&#xff0c;先不着急复习莫反杜教筛&#xff0c;按这个顺序来吧 0.随便说说 前一阵子确实学习状态不是很好&#xff0c;我感觉我个人学习状态也是忽好忽坏的&#xff0c;不过只要在学习状态好的时…