代码编织梦想

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Old_Soldier/article/details/128859824

node.js_1.全局对象、模块_jyan_29的博客-爱代码爱编程

全局对象、模块 1 Node.js概述1.1 Node.js概述1.1.1 Node.js定义1.1.2 Node.js与JavaScript1.1.3 安装Node.js1.1.4 运行Node.js 1.

11.node.js的全局对象-爱代码爱编程

文章目录 node.js的全局对象全局对象和全局变量__filename(前面是两个\_)__dirname(前面是两个\_)setTimeout(cb,ms)clearTimeout(t)setInterval(cb, ms)consoleprocess退出状态码Process的属性Process的方法 node.js的全局对象 JavaS

Node. js 有哪些全局对象-爱代码爱编程

一、是什么 在浏览器 JavaScript 中,通常window 是全局对象, 而 Nodejs中的全局对象是 global 在NodeJS里,是不可能在最外层定义一个变量,因为所有的用户代码都是当前模块的,只在当前模块里可用,但可以通过exports对象的使用将其传递给模块外部 所以,在NodeJS中,用var声明的变量并不属于全局的变量,只在

(6)Node.js 全局对象-爱代码爱编程

一、浏览器全局对象和Node.js 全局对象 浏览器下的全局对象是window,而Node.js 下的全局对象是 global。 二、Node.js全局对象global的注意事项 • 在交互模式下,声明的变量和函数都属于 global • 例如:var a = 1;global.a 可以访问到 • 示例:1.首先直接打印一个global.a,我

Node.js全局对象-爱代码爱编程

Node.js全局对象 1 概述2 __filename(两个下划线)3 __dirname(两个下划线)4 setTimeout(fn,ms)5 clearTimeout(t)6 setInterval(cb, ms)7 clearInterval(t)8 process对象8.1 属性8.2 方法8.3 事件(exit) 1 概述 Nod

Node.js 全局对象-爱代码爱编程

一、Node.js 全局对象 JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 glob

node.js:全局可用变量、函数和对象_让你五行代码的博客-爱代码爱编程

1.理解全局作用域 在Node.js中,global对象定义了全局命名空间。在Web前端培训课堂上,老师经常提到,当我们定义了一个全局变量时,这个变量同时也会成为全局对象global的属性,反之亦然。可以说在全局作用域中,任何变量、函数和对象都是global对象的一个属性值。 2.理解“全局可用” 本节中要介绍的是,在Node.js中提供的一些全局可