前端开发 详解 Node. js 都有哪些全局对象?
在 Node.js 中,全局对象(Global Objects)是指在任何模块中都可以直接访问的对象和变量,而不需要显式地进行导入。Node.js 提供了一些全局对象,帮助开发者在编写应用程序时更加方便地进行一些常见操作,如文件系统操作、定时任务、路径处理等。
常见的 Node.js 全局对象
global__dirname__filenameprocesssetTimeout()和setInterval()Bufferrequire()module和exports
下面我们会通过具体的项目代码示例来讲解这些全局对象的使用。
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. module 和 exports
module 和 exports 是 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():用于加载模块。module和exports:用于模块化代码。
这些全局对象的合理使用将使开发过程更加简便和高效。
相关文章:
前端开发 详解 Node. js 都有哪些全局对象?
在 Node.js 中,全局对象(Global Objects)是指在任何模块中都可以直接访问的对象和变量,而不需要显式地进行导入。Node.js 提供了一些全局对象,帮助开发者在编写应用程序时更加方便地进行一些常见操作,如文件…...
2024_12_20_生活记录
年底了,提前祝各位朋友们新年快乐!我将近两年没动笔写blog了,主要确实挺忙。。。今天想简单聊聊自己的近期想法,一方面是职业规划,一方面是生信,最后是个人感悟。 职业规划 熟悉我的朋友们会了解我之前一直…...
Sequelize ORM 现有表如何使用
一、 在mysql中创建一个表 或者随便找一个现有的表 已经有了一张叫做xw_posts的表。表里的字段非常简单,大家可以自己建一下 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:它是相关性还是托布勒第一定律? 应用 2:将空间带入非空间模型 结论 在 ArcGIS Pro 3.4 中,我们在新的空间组件实用程序(Moran 特征向量)工具集中发布了一个新工具 - 从字段过滤空间自相关。…...
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 选项: data 选项:属性值必须是一个函数;返回值是一个对象,返回的对象会被 Vue 的响应式系统劫持,之后对该对象的任何访问或者修改都会在劫持中被处理。 在 Vue2.x 中,data 的属性值可以是一个函数&am…...
Elasticsearch 国产化替代方案之一 Easysearch 的介绍与部署指南
一、前言 在国内数字化转型浪潮和 信创 大背景下,“替代进口”成为许多企业级应用所需要面对的重要课题,搜索领域也不例外。 Elasticsearch(简称 ES)作为一款业界领先的全文搜索和分析引擎,虽然功能强大,但…...
Pytorch | 从零构建EfficientNet对CIFAR10进行分类
Pytorch | 从零构建EfficientNet对CIFAR10进行分类 CIFAR10数据集EfficientNet设计理念网络结构性能特点应用领域发展和改进 EfficientNet结构代码详解结构代码代码详解MBConv 类初始化方法前向传播 forward 方法 EfficientNet 类初始化方法前向传播 forward 方法 训练过程和测…...
Python超能力:高级技巧让你的代码飞起来
文章一览 前言一、with1.1 基本用法1.2 示例自定义上下文管理器 二、条件表达式三、列表式推导式与 zip 结合 四、map() 函数(内置函数)map用于数据清洗1. 数据清洗:字母大小写规范2. filter() 函数 五、匿名函数 lambda5.1 lambda的参数&…...
熊军出席ACDU·中国行南京站,详解SQL管理之道
12月21日,2024 ACDU中国行在南京圆满收官,本次活动分为三个篇章——回顾历史、立足当下、展望未来,为线上线下与会观众呈现了一场跨越时空的技术盛宴,吸引了众多业内人士的关注。云和恩墨副总经理熊军出席此次活动并发表了主题演讲…...
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. 下载在本地 解压 (把以下文件放进项目文件夹里面) ├── font ├── iconfont.css ├── iconfont.json (font-class用法) ├── iconfont.js (symbol用法) ├─…...
‘vite‘ 不是内部或外部命令,也不是可运行的程序
报错:执行 npm run dev时,提示’vite’ 不是内部或外部命令,也不是可运行的程序 解决:执行 npm install -g vite 报错:导入vite后再次执行npm run dev,报错failed to load config from E:\eclipseWP\test1…...
2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
引言 本期介绍了一种基于加权平均位置概念的元启发式优化算法,称为加权平均优化算法Weighted average algorithm,WAA。该成果于2024年12月最新发表在中JCR1区、 中科院1区 SCI期刊 Knowledge-Based Systems。 在WAA算法中,加权平均位置代表当…...
如何获取 ABAP 内表中的重复项
要识别 ABAP 内表中的重复项,可以结合使用排序和循环。下面的示例展示了如何查找内部表中的重复条目: 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++抛出的异常
加载符号 解决方法: 进入VS—工具—选项----调试----符号,看右边有个“Microsoft符号服务器”,将前面的勾去掉,(可能还有删除下面的那个缓存)。 参考 C# 中捕获C/C抛出的异常 在需要捕捉破坏性异常的函数…...
ChatGPT与Postman协作完成接口测试(二)
ChatGPT生成的Postman接口测试用例脚本如下所示。 ChatGPT生成的Postman接口测试用例脚本 以下是符合Collection v2.1格式要求的 Postman 测试用例脚本,覆盖了正常注册和密码不匹配两种情况的测试: { "info": { "_postman_id": &qu…...
flask-admin modelview 中重写get_query函数
背景: flask-admin框架中提供的模型视图默认是显示表实体中的所有列表数据,如果想通过某种条件限制初始列表数据,那么久需要重写一些方法才能实现。 材料: 略 制作: 视图源码: def get_query(self):re…...
【python 逆向分析某有道翻译】分析有道翻译公开的密文内容,webpack类型,全程扣代码,最后实现接口调用翻译,仅供学习参考
文章日期:2024.12.24 使用工具:Python,Node.js 逆向类型:webpack类型 本章知识:sign模拟生成,密文的解密(webpack),全程扣代码,仅供学习参考 文章难度:低等(没…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
