Node.js 入门(2):常用全局对象

396 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

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

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

常用的全局对象

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

在浏览器中运行JS,会有一个全局对象叫作 window 对象。在 Node.js 中,这个全局对象叫作 global 。

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

Snipaste_2022-07-29_12-16-19.png

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

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

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

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:获取当前文件完整路径和文件名称

小结

本文简单介绍了 Node.js 中的常用的全局对象,大多和在浏览器平台保持一致。除此,由于 Node.js 采用了 CommonJS 模块化规范,还有一些特殊的全局对象,只能应用在模块( JS 文件)中,比如 requiremodule 等。