Nodejs中的全局对象

2023-10-27

今天我们将探讨Nodejs中的全局对象,这是Nodejs中重要且有趣的知识点。我们将通过生动形象的例子和风趣的风格来深入理解这些概念,并比较Nodejs中的全局对象与前端JavaScript中的全局对象之间的异同点。

全局对象是什么?

Nodejs环境中,有一个全局对象global,它在所有模块中都是可见的,类似于前端JavaScript中的window全局对象。然而,不同于浏览器环境,Nodejs中没有浏览器窗口,所以没有类似window这样的对象。而是使用global来提供类似的功能。

// app.js
console.log(global);

Nodejs中,当我们运行上述代码时,会输出一个包含许多全局属性和方法的对象。这些全局属性和方法是Nodejs运行时提供的基础功能。

image.png

常见的全局对象属性和方法

__dirname和__filename

__dirname是一个字符串,表示当前执行脚本所在的目录的绝对路径。而__filename则表示当前执行脚本的文件名(包含绝对路径)。

// app.js
console.log(__dirname);
console.log(__filename);

运行 node app.js,输出如下:

image.png

setTimeout和setInterval

Nodejs中,我们可以使用setTimeoutsetInterval方法来设置定时器。这两个方法在前端JavaScript中也是常见的。

// app.js
console.log("开始");
setTimeout(() => {
  console.log("这是一个延迟了2s的信息");
}, 2000);

setInterval(() => {
  console.log("这个信息每过1s都会发送一次");
}, 1000);

运行 node app.js,输出如下:

image.png

process

process是一个全局对象,提供与当前Nodejs进程相关的信息和控制功能。

// app.js
console.log(process.pid); // 当前进程的PID(进程ID)
console.log(process.platform); // 当前操作系统平台
console.log(process.version); // Node.js的版本号

运行 node app.js,输出如下:

image.png

require和module.exports

Nodejs中,我们使用require方法来引入其他模块。module.exports则用于导出当前模块的功能。

// math.js
const add = (a, b) => a + b;
module.exports = { add };

// app.js
const math = require('./math');
console.log(math.add(2, 3)); // 输出 5

运行 node app.js,输出如下:

image.png

global对象的自定义属性

除了上述内置属性和方法,我们也可以在global对象上定义自己的属性。

// customGlobal.js
global.customMessage = "Hello, 我是一个自定义的global属性";
// app.js
require('./customGlobal');
console.log(global.customMessage); // 输出 "Hello, 我是一个自定义的global属性"

请注意,虽然在某些情况下全局变量可能很方便,但应谨慎使用全局变量,因为它们可能导致命名冲突和代码维护问题。

运行 node app.js,输出如下:

image.png

Nodejs全局对象global和前端JavaScript中全局对象window的异同点

共同点

无论是Nodejs中的全局对象global还是前端JavaScript中的全局对象window,它们都提供了全局作用域,并且可以在任何地方访问。

不同点

最显著的不同是,前端JavaScript中的window对象提供了许多与浏览器窗口和DOM相关的功能,比如documentnavigator等。而Nodejs中的global对象主要提供了与服务器和操作系统相关的功能,比如processrequire等。

此外,Nodejs中的全局对象没有window的概念,因为Nodejs是基于V8引擎的JavaScript运行时,没有浏览器的窗口概念。相反,Node.js提供了许多与服务器端开发相关的功能,比如文件系统访问、网络请求等。

总结

全局对象是Nodejs中非常重要的概念,它为我们提供了许多有用的功能和属性。通过对Nodejs中的全局对象深入了解,我们可以更好地利用Nodejs构建强大的服务器端应用程序。同时,通过与前端JavaScript中的全局对象进行比较,我们也能更清楚地理解它们之间的异同点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nodejs中的全局对象 的相关文章

随机推荐

  • IDEA 代码没错但是编译出错解决办法

    上午运行项目的时候突然编译器崩了 找了半天原因终于找到了元凶 因为项目是UTF 8格式 但是检查 idea encodings xml是否对某些类指定了charset gbk 如果有的话 删除charset即可 其他的一些寻常的编译错误网上
  • Java高频面试复习题,助你吊打面试官

    前言 2022年对程序员来说是特别严峻的一年 也是大改革的一年 大部分人因为今年 疫情 的原因纷纷离开了自己原有的岗位 也有人抓住机会逆流而上拿到更高的待遇 2022年金九银十已经到来了 试问你进入了自己心仪的企业了吗 拿到自己满意的薪资待
  • Send Mail

    using System using System Web Mail using System Configuration using System Web using System IO using DAL namespace BLL
  • 2023华为OD机试真题Python实现【密室逃生游戏】

    题目描述 小强正在参加 密室逃生 游戏 当前关卡要求找到符合给定密码K 升序的不重复小写字母组成 的箱子 并给出箱子编号 箱子编号为1 N 每个箱子中都有一个字符串s 字符串由大写字母 小写字母 数字 标点符号 空格组成 需要在这些字符串中
  • Echarts+jquery实现复杂的渐变色仪表盘

    ECharts 一个纯 Javascript 的图表库 可以流畅的运行在 PC 和移动设备上 Echarts提供了很多的图表 像是仪表图 关联图等 代码比较好上手 有很多配置项 下面是我记录我做过的仪表盘 效果图 需求 1 颜色渐变效果 2
  • 从 Java 到 Go:搭建问答社区后端的过渡之旅

    目录 目录 1 项目概述 2 环境准备 2 1 安装依赖 3 从 Java 到 Go 的基础知识
  • uni-app离开当前页面后,video组件依然播放视频

    问题 页面中使用了video组件 点击播放后 切换到其他页面 视频仍在播放 可以听见声音 目前采用的方法
  • 智能五子棋-C语言

    一 项目需求 五子棋是一种简单的黑白棋 历史悠久 起源于中国 后传入日本 在日本被称为 连珠 是一种老少皆宜的益智游戏 人工智能五子棋系统的目标用户是一切想致力于研究人机对弈算法理论的相关研究者和一切想通过此系统进行五子棋人机对弈游戏的人群
  • SpringBoot依赖管理与自动配置及相关注解

    依赖管理 导入starter场景启动器 1 spring boot starter xxxxx xxxxx 就是指某种场景 引入该starter 这个场景所有常规需要的依赖都自动引入项目 如
  • git使用小手册(一)

    本文章属于git入门篇 针对刚开始接触git的同学 帮助大家了解git并理清使用思路 当然有git使用经验的也不妨一看 说不定会有意外收获呢 本篇假设你已经安装好git 并配置好了username email信息 一 git简介 Git是一
  • 数据结构课设--图书管理系统(含泪版)

    1 要求 设计一个计算机管理系统完成图书管理基本业务 基本要求 1 每种书的登记内容包括书号 书名 著作者 现存量和库存量 2 对书号建立索引表 线性表 以提高查找效率 3 采编入库 新购一种书 确定书号后 登记到图书帐目表中 如果表中已有
  • MATLAB小技巧(22)矩阵分析--逐步回归

    MATLAB小技巧 22 矩阵分析 逐步回归 前言 一 MATLAB仿真 二 仿真结果 三 小结 前言 MATLAB进行图像处理相关的学习是非常友好的 可以从零开始 对基础的图像处理都已经有了封装好的许多可直接调用的函数 这个系列文章的话主
  • 基于python的人员抽签程序

    要求 抽签人数可以指定 人员名单外部导入 抽中的人员自动剔除 bug 当人数 1的时候有bug 人数最大为14 导入库 from tkinter import import random 导入名单 is run False 启停判断 f o
  • ARM 中MMU使用实例

    转自 http www eeworld com cn mcu article 2016080728323 html MMU使用实例 地址映射 本开发板SDRAM的物理地址范围处于0x30000000 0x33FFFFFF S3C2410 S
  • Comparison of a float with a value in C

    Predict the output of following C program include
  • Blender_1_移动、旋转、缩放

    1 GRS快捷键方式 首先 选中物体 1 1 移动 按下G Grab 移动 1 1 1 按XYZ轴移动 按下G之后 再按X 物体按X轴移动 同理 按Y后移动鼠标沿Y轴移动 按Z后移动鼠标沿Z轴移动 还有一个快捷方式 按G之后 按鼠标中间 直
  • VOC数据集mAP计算

    检测出来的bbox包含score和bbox 按照score降序排序 所以每添加一个样本 就代表阈值降低一点 真实情况下score降低 iou不一定降低 这样就是可以有很多种阈值 每个阈值情况下计算一个prec和recall d 对模型检测到
  • itk vtk vs2017 Qt 问题解决

    itk vtk vs2017 Qt 问题解决 VS工程重命名编译警告MSB8028 中间目录 Debug 包含从另一个项目共享的文件 解决关于VS2017安装插件不成功和插件下载速度慢的问题 注 下载2 1 2版本报错 最后下载最新版成功
  • AOP相关概念

    AOP概念 面向切面编程 Aspect Oriented programming 讲很多业务都要使用的功能进行抽取出来单独实现 在运行业务的时候 再动态的植入这些抽取的代码 将共性业务和核心业务分离 例子 1 身份验证 登录 2 权限验证
  • Nodejs中的全局对象

    今天我们将探讨Nodejs中的全局对象 这是Nodejs中重要且有趣的知识点 我们将通过生动形象的例子和风趣的风格来深入理解这些概念 并比较Nodejs中的全局对象与前端JavaScript中的全局对象之间的异同点 全局对象是什么 在Nod