Node.js 全局对象介绍

news2024/11/15 13:27:45

在学习 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 等。这个下一节会讲到。

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

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

相关文章

SpringMVC之响应

目录 一:环境准备 二:响应页面[了解] 三:返回文本数据[了解] 四:响应JSON数据 SpringMVC接收到请求和数据后,进行一些了的处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的…

1月更新!EasyOps® 28+新功能“狂飙”上线~

2023节后,我们就要“搞事情”! 一波新功能已上线,快看是不是你需要的! 持续升级优化全平台产品, 只为成为你数字化变革最值得信赖的合作伙伴! 优维EasyOps全平台28新功能来了! ↓↓↓ 1、H…

Spring的后处理器之BeanFactoryPostProcessor

Spring的后处理器 Spring的后处理器是Spring对外开放的重要扩展点,允许我们介入到Bean的整个实例化流程中来,以达到动态注册BeanDefinition,动态修改BeanDefinition,以及动态修改Bean的作用。Spring主要有两种后处理器&#xff1…

【车载开发系列】StatusOfDTC的解析

【车载开发系列】StatusOfDTC的解析 StatusOfDTC的解析【车载开发系列】StatusOfDTC的解析StatusOfDTC概念StatusOfDTC列表StatusOfDTC状态掩码Bit 0: TestFailedBit 1: testFailedThisOperationCycleBit 2: pendingDTCBit 3: confirmedDTCBit 4: testNotCompletedSinceLastCle…

【操作系统】3、内存管理

文章目录三、内存管理3.1 内存基础3.1.1 内存管理概念3.1.2 程序装入与链接3.1.3 内存保护3.2 内存空间的分配与回收3.2.1 连续分配管理方式3.2.1.1 单一连续分配3.2.1.2 固定分区分配3.2.1.3 动态分区分配3.2.2 动态分区分配算法3.2.2.1 首次适应算法3.2.2.2 最佳适用算法3.2.…

【数据库原理与SQL Server应用】Part05——表和表数据操作

【数据库原理与SQL Server应用】Part05——表和表数据操作一、表概念1.1 表结构1.2 表类型1.3 数据类型二、创建表2.1 管理工具界面方式创建表2.2 命令行方式创建表三、修改表3.1 管理工具界面方式修改表3.2 命令行方式修改表四、删除表五、表数据操作5.1 管理工具界面方式操作…

怎么快速选择出色的香港服务器

相信一些大规模企业或站长都不满足于普通的香港VPS,虽然它也拥有很不错的性能与速度,但远远比不上香港服务器。但是,对于初次使用香港服务器的用户来说,选择起来肯定是要经过一番考虑的,那么,有没有什么简单…

电子词典项目

16. 电子词典项目需求 项目要求: 登录注册功能,不能重复登录,重复注册单词查询功能历史记录功能,存储单词,意思,以及查询时间基于TCP,支持多客户端连接采用数据库保存用户信息与历史记录将dic…

VS2022离线安装教程

官方教程下载和安装步骤 https://docs.microsoft.com/zh-cn/visualstudio/install/create-an-offline-installation-of-visual-studio?viewvs-2022 使用命令行创建本地布局 下载所需的 Visual Studio 版本的引导程序,并将其复制到要用作本地布局源位置的目录中。…

训练自己的GPT2模型(中文),踩坑与经验

GPT2与Bert、T5之类的模型很不一样!!! 如果你对Bert、T5、BART的训练已经很熟悉,想要训练中文GPT模型,务必了解以下区别!!! 官方文档里虽然已经有教程,但是都是英文&…

手撸低代码平台搭建(四)组件拖动自由布局的实现

前言 大家好,在前两篇文章中,我们走进了前端低代码的世界,并揭秘了低代码的核心——页面设计器的实现。在揭秘页面设计器时,我们重点分享了顺序排列布局的组件拖动方式,那篇文章的评论中,有小伙伴问到自由布局的实现,那么我们在这篇文章中来分享一下自由布局拖动的实现…

Echarts柱形头部圆弧处理

第008个点击查看专栏目录对于柱状图来说,我们想要的效果是圆柱的上面进行圆弧的处理,产生顺滑的感觉,怎么处理呢,只要设置好样式即可,参考源代码圆角半径,单位px,支持传入数组分别指定 4 个圆角…

VMware 多站点容灾之SRM部署实践

一、背景 在VMware 多云场景中,我们最初会通过vmware的副本机制手动克隆或主从模式完成一些节点的灾备,虽然在初期不会出现什么问题,但一旦出现灾备恢复的复杂度和数据丢失风险还是一大考验,基于此,我们可借助VMware v…

Qt 获取网络信息

在Qt Network模块中使用QHostAddress存放IP地址,QHostInfo类来获取主机名和IP。 进行TCP/UDP编程时,需要将连接的主机名解析为IP地址,这个操作用DNS协议执行。 在互联网中现在有两种IP类型:IVP4和IVP6。 IP地址是给每一个连接在互…

Linux操作系统之基础IO

目录 系统IO调用接口 open write read 理解文件描述符fd 理解Linux操作系统的设计哲学,多态的思想是如何应用在Linux文件系统的 输出,追加,输入重定向的本质 子进程共享父进程的文件 IO的两个缓冲区 Linux特有的EXT文件系统 磁盘系…

代码训练营第二十天|530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

530 .二叉搜索树的最小绝对差 看完题后的思路 因为是二叉搜索树,所以直接按照二叉搜索树中序遍历,得到递增序列。遍历过程中一个指针指向遍历过的前一个元素 prenull; void f(root)if rootnull return递归 f&#x…

git语义化定制版本规范

目录说明说明 语义化版本控制规范,语义化的版本控制规范要求版本号由三部分构成:x.y.z MAJOR(X):这个是主版本号,一般是涉及到不兼容的 API 更改时,这个会变化。MINOR(Y)&#xff…

剑指Offer pow() 函数实现(快速幂)!!!

剑指 Offer 16. 数值的整数次方 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示…

早已有所耳闻的堆排序,你知道如何用C语言实现吗? 【堆排序|C语言版】

目录 0.写在前面 1.什么是堆? 2. 堆排序 2.1 建堆 2.1.1 AdjustUp(向上调整算法) 2.1.2 AdjustDown(向下调整算法) 2.2 两种建堆算法的时间复杂度 2.2.1 AdjustUp建堆的时间复杂度 2.2.2 AdjustDown建堆的时间…

神经网络(模型)量化介绍 - PTQ 和 QAT

神经网络(模型)量化介绍 - PTQ 和 QAT1. 需求目的2. 量化简介3. 三种量化模式3.1 Dynamic Quantization - 动态量化3.2 Post-Training Static Quantization - 训练后静态量化3.3 Quantization Aware Training - 量化感知训练4. PTQ 和 QAT 简介5. 设备和…