当前位置: 首页 > news >正文

前端开发 详解 Node. js 都有哪些全局对象?

Node.js 中,全局对象(Global Objects)是指在任何模块中都可以直接访问的对象和变量,而不需要显式地进行导入。Node.js 提供了一些全局对象,帮助开发者在编写应用程序时更加方便地进行一些常见操作,如文件系统操作、定时任务、路径处理等。

常见的 Node.js 全局对象

  1. global
  2. __dirname
  3. __filename
  4. process
  5. setTimeout()setInterval()
  6. Buffer
  7. require()
  8. moduleexports

下面我们会通过具体的项目代码示例来讲解这些全局对象的使用。


1. global

global 是 Node.js 提供的全局对象,类似于浏览器中的 window。它是全局作用域中的对象,可以访问和修改它的属性。通常不常用,因为 Node.js 提供了其他更有用的全局对象,但在某些场合可以用来存储一些全局变量。

示例:使用 global 存储全局变量
// global-example.js// 在 global 对象上存储一个全局变量
global.myGlobalVar = "Hello, World!";function greet() {console.log(global.myGlobalVar); // 直接访问全局变量
}greet();  // 输出 "Hello, World!"

在上述示例中,我们将一个变量存储在 global 对象上,并在函数 greet() 中访问这个变量。

2. __dirname__filename

  • __dirname:表示当前模块所在的目录的绝对路径。
  • __filename:表示当前模块的文件的绝对路径。

这两个对象非常有用,尤其是在处理文件路径时,避免使用相对路径来引用文件。

示例:使用 __dirname__filename
// path-example.jsconsole.log("__dirname:", __dirname);  // 输出当前模块所在目录的路径
console.log("__filename:", __filename);  // 输出当前模块的完整路径// 拼接文件路径
const path = require('path');
const filePath = path.join(__dirname, 'example.txt');
console.log("File Path:", filePath);

在这个示例中,__dirname__filename 分别输出当前文件的路径和所在目录的路径,我们还通过 path.join() 方法拼接路径来构造文件的绝对路径。

3. process

process 是 Node.js 提供的一个全局对象,包含了与当前 Node.js 进程相关的各种信息。你可以通过它获取命令行参数、环境变量、进程信息等。

常用方法:
  • process.argv:获取命令行参数。
  • process.env:获取环境变量。
  • process.exit():退出当前进程。
  • process.exitCode:设置进程的退出码。
示例:使用 process 获取命令行参数
// process-example.jsconsole.log("Process Arguments:", process.argv);  // 输出命令行参数// 获取第一个参数
const name = process.argv[2] || 'Guest';
console.log(`Hello, ${name}!`);

在这个示例中,我们使用 process.argv 获取命令行参数。运行时,可以通过命令行传递参数。

node process-example.js John

输出将是:

Process Arguments: [ 'node', 'process-example.js', 'John' ]
Hello, John!

4. setTimeout()setInterval()

这两个方法用于设置定时器:

  • setTimeout():指定延迟执行某个函数。
  • setInterval():指定每隔一段时间重复执行某个函数。
示例:使用 setTimeout()setInterval()
// timeout-interval-example.js// 使用 setTimeout 延迟执行
setTimeout(() => {console.log("This runs after 3 seconds.");
}, 3000);// 使用 setInterval 定时执行
let count = 0;
const intervalId = setInterval(() => {count++;console.log(`This runs every 2 seconds. Count: ${count}`);if (count === 5) {clearInterval(intervalId); // 终止定时器console.log("Interval stopped.");}
}, 2000);

在这个示例中,setTimeout() 延迟 3 秒后执行一次,而 setInterval() 每 2 秒执行一次,直到执行 5 次后使用 clearInterval() 停止定时器。

5. Buffer

Buffer 是 Node.js 中用于处理二进制数据的全局对象。它允许直接在内存中操作二进制数据块,通常用于与流(Stream)相关的操作。

示例:使用 Buffer 处理二进制数据
// buffer-example.jsconst buf = Buffer.from('Hello, Node.js!');
console.log(buf);  // 输出 Buffer: <Buffer 48 65 6c 6c 6f 2c 20 4e 6f 64 65 2e 6a 73 21>// 将 Buffer 转换为字符串
console.log(buf.toString());  // 输出 "Hello, Node.js!"

在这个示例中,Buffer.from() 用于创建一个新的 Buffer,然后我们使用 toString() 方法将二进制数据转换为字符串。

6. require()

require() 是 Node.js 中用来导入模块的全局函数。通过它,我们可以加载文件、内置模块或第三方模块。

示例:使用 require() 导入模块
// require-example.jsconst fs = require('fs');  // 导入 fs 模块
const path = require('path');  // 导入 path 模块// 使用 fs 模块读取文件
fs.readFile(path.join(__dirname, 'example.txt'), 'utf8', (err, data) => {if (err) {console.error("Error reading file:", err);} else {console.log("File content:", data);}
});

在这个示例中,我们通过 require() 导入了内置的 fs 模块和 path 模块,然后使用它们读取文件内容。

7. moduleexports

moduleexports 是 Node.js 提供的用于模块化的全局对象,帮助我们导出和导入模块。

  • module.exports 用于导出模块内容。
  • module 对象表示当前模块的元数据。
示例:使用 module.exports 导出模块
// greet.js
module.exports.greet = function(name) {console.log(`Hello, ${name}!`);
};// app.js
const greetModule = require('./greet');
greetModule.greet('Alice');  // 输出 "Hello, Alice!"

在这个示例中,greet.js 模块通过 module.exports 导出了一个 greet 函数,app.js 模块通过 require() 导入了 greet.js 模块并调用了它。


总结

Node.js 提供了许多有用的全局对象,可以帮助我们更高效地编写代码和处理常见任务。通过合理使用这些全局对象,可以让我们的 Node.js 应用程序更加简洁和高效。常见的全局对象包括:

  • global:用于存储全局变量。
  • __dirname__filename:用于获取当前文件和目录的路径。
  • process:提供与进程相关的信息和方法。
  • setTimeout()setInterval():用于定时执行任务。
  • Buffer:处理二进制数据。
  • require():用于加载模块。
  • moduleexports:用于模块化代码。

这些全局对象的合理使用将使开发过程更加简便和高效。

相关文章:

前端开发 详解 Node. js 都有哪些全局对象?

在 Node.js 中&#xff0c;全局对象&#xff08;Global Objects&#xff09;是指在任何模块中都可以直接访问的对象和变量&#xff0c;而不需要显式地进行导入。Node.js 提供了一些全局对象&#xff0c;帮助开发者在编写应用程序时更加方便地进行一些常见操作&#xff0c;如文件…...

2024_12_20_生活记录

年底了&#xff0c;提前祝各位朋友们新年快乐&#xff01;我将近两年没动笔写blog了&#xff0c;主要确实挺忙。。。今天想简单聊聊自己的近期想法&#xff0c;一方面是职业规划&#xff0c;一方面是生信&#xff0c;最后是个人感悟。 职业规划 熟悉我的朋友们会了解我之前一直…...

Sequelize ORM 现有表如何使用

一、 在mysql中创建一个表 或者随便找一个现有的表 已经有了一张叫做xw_posts的表。表里的字段非常简单&#xff0c;大家可以自己建一下 CREATE TABLE xw_posts (id int unsigned NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_…...

ArcGIS Pro 3.4新功能3:空间统计新特性,基于森林和增强分类与回归,过滤空间自相关

目录 应用 1&#xff1a;它是相关性还是托布勒第一定律&#xff1f; 应用 2&#xff1a;将空间带入非空间模型 结论 在 ArcGIS Pro 3.4 中&#xff0c;我们在新的空间组件实用程序&#xff08;Moran 特征向量&#xff09;工具集中发布了一个新工具 - 从字段过滤空间自相关。…...

H3C MPLS跨域optionB

实验拓扑 实验需求 如图,VPN1 和 VPN2 分别通过运营商 MPLS VPN 连接各自分支机构按照图示配置 IP 地址,VPN1 和 VPN2 连接同一个 PE 设备的私网 IP 网段存在地址复用,使用多 VRF 技术来防止 IP 冲突AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loo…...

源码分析之Openlayers中Geometry基类介绍

概述 在上一篇文章源码分析之Openlayers中Geom篇中提到Geometry类是继承于 Openlayers 中的BaseObject类(参考源码分析之Openlayers中核心BaseObject类).而Geometry类通常情况下也是作为一个抽象基类,作为Geom几何图形的基类或父类,不会在应用中去实例化它.Geometry类回去注册…...

《Vue3 三》Vue 中的 options 选项

data 选项&#xff1a; data 选项&#xff1a;属性值必须是一个函数&#xff1b;返回值是一个对象&#xff0c;返回的对象会被 Vue 的响应式系统劫持&#xff0c;之后对该对象的任何访问或者修改都会在劫持中被处理。 在 Vue2.x 中&#xff0c;data 的属性值可以是一个函数&am…...

Elasticsearch 国产化替代方案之一 Easysearch 的介绍与部署指南

一、前言 在国内数字化转型浪潮和 信创 大背景下&#xff0c;“替代进口”成为许多企业级应用所需要面对的重要课题&#xff0c;搜索领域也不例外。 Elasticsearch&#xff08;简称 ES&#xff09;作为一款业界领先的全文搜索和分析引擎&#xff0c;虽然功能强大&#xff0c;但…...

Pytorch | 从零构建EfficientNet对CIFAR10进行分类

Pytorch | 从零构建EfficientNet对CIFAR10进行分类 CIFAR10数据集EfficientNet设计理念网络结构性能特点应用领域发展和改进 EfficientNet结构代码详解结构代码代码详解MBConv 类初始化方法前向传播 forward 方法 EfficientNet 类初始化方法前向传播 forward 方法 训练过程和测…...

Python超能力:高级技巧让你的代码飞起来

文章一览 前言一、with1.1 基本用法1.2 示例自定义上下文管理器 二、条件表达式三、列表式推导式与 zip 结合 四、map() 函数&#xff08;内置函数&#xff09;map用于数据清洗1. 数据清洗&#xff1a;字母大小写规范2. filter() 函数 五、匿名函数 lambda5.1 lambda的参数&…...

熊军出席ACDU·中国行南京站,详解SQL管理之道

12月21日&#xff0c;2024 ACDU中国行在南京圆满收官&#xff0c;本次活动分为三个篇章——回顾历史、立足当下、展望未来&#xff0c;为线上线下与会观众呈现了一场跨越时空的技术盛宴&#xff0c;吸引了众多业内人士的关注。云和恩墨副总经理熊军出席此次活动并发表了主题演讲…...

FPGA实现MIPI转FPD-Link车载同轴视频传输方案,基于IMX327+FPD953架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、详细设计方案设计原理框图IMX327 及其配置FPD-Link视频串化-解串方案MIPI CSI RX图像 ISP 处理图像缓存HDMI输出工程源码架构 5、…...

vue3动态绑定图片和使用阿里巴巴矢量图

矢量图 1。加购物车 2. 下载在本地 解压 &#xff08;把以下文件放进项目文件夹里面&#xff09; ├── font ├── iconfont.css ├── iconfont.json &#xff08;font-class用法&#xff09; ├── iconfont.js &#xff08;symbol用法&#xff09; ├─…...

‘vite‘ 不是内部或外部命令,也不是可运行的程序

报错&#xff1a;执行 npm run dev时&#xff0c;提示’vite’ 不是内部或外部命令&#xff0c;也不是可运行的程序 解决&#xff1a;执行 npm install -g vite 报错&#xff1a;导入vite后再次执行npm run dev&#xff0c;报错failed to load config from E:\eclipseWP\test1…...

2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码

引言 本期介绍了一种基于加权平均位置概念的元启发式优化算法&#xff0c;称为加权平均优化算法Weighted average algorithm&#xff0c;WAA。该成果于2024年12月最新发表在中JCR1区、 中科院1区 SCI期刊 Knowledge-Based Systems。 在WAA算法中&#xff0c;加权平均位置代表当…...

如何获取 ABAP 内表中的重复项

要识别 ABAP 内表中的重复项&#xff0c;可以结合使用排序和循环。下面的示例展示了如何查找内部表中的重复条目&#xff1a; DATA: BEGIN OF itab OCCURS 0,field1 TYPE i,field2 TYPE c LENGTH 10,END OF itab,wa LIKE LINE OF itab.* Add sample data to internal table it…...

编译笔记:vs 中 正在从以下位置***加载符号 C# 中捕获C/C++抛出的异常

加载符号 解决方法&#xff1a; 进入VS—工具—选项----调试----符号&#xff0c;看右边有个“Microsoft符号服务器”&#xff0c;将前面的勾去掉&#xff0c;&#xff08;可能还有删除下面的那个缓存&#xff09;。 参考 C# 中捕获C/C抛出的异常 在需要捕捉破坏性异常的函数…...

ChatGPT与Postman协作完成接口测试(二)

ChatGPT生成的Postman接口测试用例脚本如下所示。 ChatGPT生成的Postman接口测试用例脚本 以下是符合Collection v2.1格式要求的 Postman 测试用例脚本&#xff0c;覆盖了正常注册和密码不匹配两种情况的测试&#xff1a; { "info": { "_postman_id": &qu…...

flask-admin modelview 中重写get_query函数

背景&#xff1a; flask-admin框架中提供的模型视图默认是显示表实体中的所有列表数据&#xff0c;如果想通过某种条件限制初始列表数据&#xff0c;那么久需要重写一些方法才能实现。 材料&#xff1a; 略 制作&#xff1a; 视图源码&#xff1a; def get_query(self):re…...

【python 逆向分析某有道翻译】分析有道翻译公开的密文内容,webpack类型,全程扣代码,最后实现接口调用翻译,仅供学习参考

文章日期&#xff1a;2024.12.24 使用工具&#xff1a;Python&#xff0c;Node.js 逆向类型&#xff1a;webpack类型 本章知识&#xff1a;sign模拟生成&#xff0c;密文的解密(webpack)&#xff0c;全程扣代码&#xff0c;仅供学习参考 文章难度&#xff1a;低等&#xff08;没…...

tensorflow_probability与tensorflow版本依赖关系

参考&#xff1a;Tensorflow Probability 与 TensorFlow 的版本依赖关系_tensorflow与tensorflow-probability对应版本的网址-CSDN博客 tensorflow2.10对应tensorflow_probability0.18.0&#xff0c;安装命令&#xff1a;pip install tensorflow_probability0.18.0 版本对应关…...

构建安全的用户认证系统:PHP实现

构建安全的用户认证系统&#xff1a;PHP实现 用户认证是任何Web应用的重要组成部分&#xff0c;确保只有授权用户才能访问特定资源。构建一个安全的用户认证系统需要考虑多种因素&#xff0c;包括密码存储、会话管理和防止常见gongji。本文将介绍如何使用PHP实现一个安全的用户…...

VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比

VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比 目录 VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比; 2.单变量时间序列预测 就是先vmd把变…...

天融信网络架构安全实践

1、医院客户想通过等保2.0三级&#xff0c;推荐哪几款网络安全产品&#xff1f;&#xff08;至少6个&#xff09; TopSAg(运维安全审计系统) TopNAC&#xff08;网络准入系统&#xff09; TopEDR&#xff08;终端威胁防御系统&#xff09; TDSM-SBU&#xff08;存储备份一体机…...

腾讯云云开发 Copilot具有以下优势

与其他代码生成工具相比&#xff0c;腾讯云云开发 Copilot具有以下优势&#xff1a; 功能特性方面 自然语言处理能力更强&#xff1a;许多代码生成工具仅能实现简单的代码补全或根据特定模板生成代码&#xff0c;而云开发 Copilot可直接通过自然语言生成完整的小程序/web全栈…...

electron-vite【实战系列教程】

创建项目 安装必要的插件 UI 库 element-plus npm install element-plus --save 安装 element-plus 图标 npm install element-plus/icons-vue 安装插件 – 自动注册组件 vs 自动导入框架方法 npm install -D unplugin-vue-components unplugin-auto-import electron.vite.conf…...

【微信小程序】微信小程序中的异步函数是如何实现同步功能的

在微信小程序中&#xff0c;虽然很多 API 都是异步的&#xff0c;但可以通过一些方法来实现类似同步的功能。以下是几种常见的方法&#xff1a; 1. 使用 async/await async/await 是 ES2017 引入的语法糖&#xff0c;它基于 Promise 来实现异步操作的同步化写法。 示例代码 …...

贪心算法(三)

目录 一、k次取反后最大化的数组和 二、优势洗牌 三、最长回文串 四、增减字符串匹配 一、k次取反后最大化的数组和 k次取反后最大化的数组和 贪心策略&#xff1a; 解题代码&#xff1a; class Solution { public:int largestSumAfterKNegations(vector<int>&am…...

uniApp打包H5发布到服务器(docker)

使用docker部署uniApp打包后的H5项目记录&#xff0c;好像和VUE项目打包没什么区别... 用HX打开项目&#xff0c;首先调整manifest.json文件 开始用HX打包 填服务器域名和端口号~ 打包完成后可以看到控制台信息 我们可以在web文件夹下拿到下面打包好的静态文件 用FinalShell或…...

【AI落地应用实战】篡改检测技术前沿探索——从基于检测分割到大模型

在数字化洪流席卷全球的当下&#xff0c;视觉内容已成为信息交流与传播的核心媒介&#xff0c;然而&#xff0c;随着PS技术和AIGC技术的飞速发展&#xff0c;图像篡改给视觉内容安全带来了前所未有的挑战。 本文将探讨篡改检测技术的现实挑战&#xff0c;分享篡改检测技术前沿…...