Node.js 全局对象介绍

在学习 Javascript 之初,会接触一个概念:JS 由三部分组成,DOM + BOM + ECMAScript。其中前两者是宿主环境,也就是浏览器所提供的能力。后者才是 JS 语言本身的标准。

在上篇文章《Node.js入门(1):安装和简介》中,提到了 Node.js 本质是 JS 的一个运行时,所以学习 Node.js 时,除了我们已经掌握的 JS 基础功底,还要了解 Node.js 宿主环境提供的一些能力。

windows 和 global

全局对象是 Javascript 中永远存在的对象,它是一个存在于全局作用域的对象

但是在不同的宿主环境中,有不同的实现。

window 对象是浏览器中的全局对象。任何全局变量或者全局函数都可以通过 window 的属性来访问。比如 window.console.logwindow.setTimeout,由于它们本身是全局变量,可以直接访问,比如 console.logsetTimeout

在 Node.js 中,全局对象叫作 global

Node 中的全局对象

首先来看下 Node.js 提供了哪些全局对象。

打开终端,输入 node ,进入 REPL 环境,打印 global 对象:

打印的都是一些以前在浏览器中见过的方法:

  • clearInterval
  • clearTimeout
  • setInterval
  • setTimeout
  • clearImmediate
  • setImmediate
  • queueMicrotask:创建一个微任务
  • performance:获取性能相关的指标信息

除了打印出来的这些,像以前在 JS 中常用的 Object 对象,Math 对象,Date 对象等等,在 Node.js 中这些都可用。

Node.js 中还有一些它独有的全局对象,比如:

  • Buffer:用来处理二进制数据
  • process:表示当前的 nodejs 进程

CommonJS 规范

早期的 JavsScript 是没有模块化规范的,大都是使用社区的规范,比如 AMD,CMD,是用在浏览器环境的中模块化规范,直到后来 ES6 发布了语言标准的 ES Module 模块化规范。

而在 Node.js 中,所采用的是 CommonJS 模块化规范,它定义了 如何创建一个模块,如何导出模块,如何导入模块

  • 定义模块:一个 js 文件就是一个模块

  • 导出:统一使用 module.exports 导出

  • 导入:使用 require 方法导入一个模块

所以,除了挂载在 global 对象下的全局对象,还有一些特殊的、只能在模块中使用的全局对象对象或方法

  • require:导入模块
  • module:模块定义
  • exports:是 module.exports 的别名,即 module.exports === exports
  • __dirname:获取当前文件的绝对路径
  • __filename:获取当前文件完整路径和文件名称

这些方法并没有挂载到 global 对象上,但依然属于全局对象,可以说,它们是和 global 同级别的存在。

小结

本文简单介绍了 Node.js 中的常用的全局对象,有和浏览器平台一致的,也有自己独有的,比如 Buffer 和 process。

除此之外,由于 Node.js 采用了 CommonJS 模块化规范,还有一些特殊的全局对象,只能应用在模块( JS 文件)中,比如 requiremodule 等。这个下一节会讲到。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在 Node.js 中,有两种声明全局变量的方法: 1. 使用 `global` 对象 你可以使用 `global` 对象来声明全局变量。在 Node.js 中,所有的全局变量都是 `global` 对象的属性。例如: ``` global.a = 1; console.log(a); // 1 ``` 注意:在模块中声明的变量不会自动成为全局变量。你必须使用 `global` 对象来声明全局变量。 2. 使用 `globalThis` 对象 在 ECMAScript 2020 中,新增了一个全局对象 `globalThis`,它可以在所有的 JavaScript 环境中使用,包括浏览器和 Node.js。你可以使用 `globalThis` 对象来声明全局变量,例如: ``` globalThis.a = 1; console.log(a); // 1 ``` 注意:`globalThis` 对象Node.js 12.0 及更高版本中支持。 总结:在 Node.js 中,你可以使用 `global` 或 `globalThis` 对象来声明全局变量。 ### 回答2: 在Node.JS中,可以使用global对象来声明全局变量。global对象Node.JS全局对象,可以在应用程序的任何地方访问。 要声明一个全局变量,可以使用global关键字来设置变量的值。例如,要声明一个名为globalVar的全局变量,并将其值设置为10,可以使用以下代码: global.globalVar = 10; 这样,globalVar变量就可以在应用程序的任何文件或模块中使用,无需再额外声明或引入。 同时,也可以使用global关键字来访问和修改已经存在的全局变量。例如,已经存在一个名为globalVar的全局变量,想要将其值改为20,可以使用以下代码: globalVar = 20; 需要注意的是,使用全局变量可能会导致命名冲突和代码维护上的困难。因此,应尽量避免过多地使用全局变量,而是使用模块导出和引入的方式来实现变量的共享和访问。只有在确实需要在整个应用程序中共享变量的情况下,才考虑使用全局变量。 总结来说,Node.JS中可以使用global对象来声明和访问全局变量,但应慎重使用,避免出现命名冲突和维护困难的问题。 ### 回答3: 在Node.js中,可以通过两种方式声明全局变量。 第一种方式是使用global对象。global对象Node.js中是一个全局变量,可以在任何地方访问。我们可以直接给global对象添加属性来声明全局变量,例如: ``` global.myVariable = 5; ``` 这样,myVariable变量就成为了一个全局变量,在任何地方都可以访问和使用。 第二种方式是使用global关键字。在Node.js的模块中,可以使用global关键字定义一个全局变量,使其在整个应用程序范围内可用。例如,在一个模块中声明一个全局变量可以这样写: ``` global.myVariable = 10; ``` 然后,在其他模块中也可以直接访问和使用这个全局变量。 需要注意的是,尽量避免滥用全局变量,因为过多的全局变量会增加代码的复杂性和耦合性,不利于代码的维护和重构。在开发过程中,应该优先考虑使用局部变量和模块间的数据传递来实现功能。只在有必要的情况下使用全局变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昆吾kw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值