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

简介: 本文主要介绍了 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 等。这个下一节会讲到。

目录
相关文章
|
20天前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
24天前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
22天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
22天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
29 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
23天前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
33 1
|
1月前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
70 10
|
28天前
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍
|
24天前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
28天前
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南