首页 > 编程语言 >Node全局对象介绍

Node全局对象介绍

时间:2023-03-10 12:32:09浏览次数:51  
标签:Node 对象 JS 模块 全局 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.log​​,​​window.setTimeout​​,由于它们本身是全局变量,可以直接访问,比如 ​​console.log​​,​​setTimeout​​。

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

Node 中的全局对象

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

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

Node全局对象介绍_Node

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

  • 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 文件)中,比如 ​​require​​、​​module​​ 等。这个下一节会讲到。

标签:Node,对象,JS,模块,全局,js
From: https://blog.51cto.com/u_12382805/6112901

相关文章

  • C++--类和对象--初始化列表, stattic
             ......
  • 6.3BOM中其他常见对象
    ​ location对象location对象,是window对象的一个属性,代表浏览器上URL地址栏,使用location对象可以操作地址栏  <!DOCTYPEhtml><html><head>......
  • 6.3BOM中其他常见对象
    ​ location对象location对象,是window对象的一个属性,代表浏览器上URL地址栏,使用location对象可以操作地址栏  <!DOCTYPEhtml><html><head>......
  • .netcore全局异常处理
    一、背景某天,应用程序进程无缘无故退出,也就是我们通常说的崩溃。通常情况下,windows事件会记录一条消息。但是有时候,我们发现这样的信息,对于查找问题,还是远远不够的,因为它......
  • 使用docker-compose 部署grafana + prometheus +node_exporter 实现监控
    主机环境:kali6.1(debian..)一、安装应用安装docker-compose  aptinstalldocker-compose-y安装dockersudoaptupdatesudoaptinstall-ydocker.iosudosystem......
  • 可迭代对象和迭代器对象以及for循环的本质
    一、可迭代对象什么是可迭代对象:在数据类型的后面可以使用点加__iter__(.__iter__)来判断是不是可迭代对象不是可迭代对象:intfloatbool函数对象可迭代对象:s......
  • 面试之可迭代对象和迭代器对象以及for循环的本质
    一、可迭代对象什么是可迭代对象:在数据类型的后面可以使用点加__iter__(.__iter__)来判断是不是可迭代对象不是可迭代对象:intfloatbool函数对象可迭代对象:s......
  • Java实现对象空属性(空字符串)转null
    @Slf4jpublicclassConvertUtils{/***@Description主要解决查询时前端传参为空值("")*BeanUtils.copyProperties会把空值带入目标对象中*......
  • global 全局变量
    globalglobal关键字的作用:声明变量var是全局的。改变全局变量的值,函数内赋值并不能改变全局变量的值,所以需要global关键字str='global'deffunc1():globalstr......
  • ip2region 在nodejs中的使用
    ip2region在nodejs中的使用ip2regionv2.0-是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的xdb数据生成和查询客户端实......