Node.js核心模块及Api详解
以下是 Node.js 最常用的核心模块及 API 详解,按使用频率和重要性分类整理:
一、高频核心模块
1. fs
文件系统
const fs = require('fs');
const fsPromises = require('fs').promises; // Promise 版本// 异步读取文件(推荐)
fs.readFile('file.txt', 'utf8', (err, data) => {if (err) throw err;console.log(data);
});// Promise 方式读取(ES6+)
fsPromises.readFile('file.txt', 'utf8').then(data => console.log(data)).catch(console.error);// 同步读取(慎用)
const data = fs.readFileSync('file.txt', 'utf8');// 写文件
fs.writeFile('new.txt', 'Hello World', err => {if (err) throw err;
});// 目录操作
fs.readdir('./', (err, files) => {console.log(files); // 获取目录文件列表
});// 文件状态
fs.stat('file.txt', (err, stats) => {console.log(stats.isFile()); // 是否文件console.log(stats.size); // 文件大小
});
2. path
路径处理
const path = require('path');// 拼接路径(跨平台)
const fullPath = path.join(__dirname, 'subdir', 'file.txt');// 解析绝对路径
path.resolve('src', 'app.js'); // 等同于 __dirname + '/src/app.js'// 获取文件名/扩展名
path.basename('/foo/bar/baz.txt'); // 'baz.txt'
path.extname('index.html'); // '.html'// 路径解析
path.parse('/home/user/file.txt');
/* 返回:
{root: '/',dir: '/home/user',base: 'file.txt',ext: '.txt',name: 'file'
} */
3. http
网络服务
const http = require('http');// 创建服务器
const server = http.createServer((req, res) => {res.writeHead(200, { 'Content-Type': 'text/plain' });res.end('Hello World');
});server.listen(3000, () => {console.log('Server running on port 3000');
});// 发起 HTTP 请求
http.get('http://api.example.com', (response) => {let data = '';response.on('data', chunk => data += chunk);response.on('end', () => console.log(data));
});
二、中高频工具模块
1. events
事件触发器
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}const myEmitter = new MyEmitter();// 监听事件
myEmitter.on('event', (arg) => {console.log('Event triggered:', arg);
});// 触发事件(可传参)
myEmitter.emit('event', { data: 123 });// 一次性监听
myEmitter.once('single', () => console.log('Only once'));
2. stream
流处理
const fs = require('fs');// 读取流
const readStream = fs.createReadStream('bigfile.txt', 'utf8');readStream.on('data', chunk => {console.log('Received chunk:', chunk.length);
});readStream.on('end', () => {console.log('File read complete');
});// 写入流
const writeStream = fs.createWriteStream('output.txt');
writeStream.write('Line 1\n');
writeStream.end('Final line');
3. util
实用工具
const util = require('util');// 回调转 Promise
const readFileAsync = util.promisify(fs.readFile);// 继承检查
util.types.isDate(new Date()); // true// 深度对象调试
console.log(util.inspect(obj, { depth: null }));
三、常用全局对象
1. process
进程控制
// 环境变量
console.log(process.env.NODE_ENV);// 命令行参数
process.argv.forEach((val, index) => {console.log(`${index}: ${val}`);
});// 退出程序
process.exit(1); // 非零表示异常退出// 标准输入输出
process.stdin.on('data', data => {process.stdout.write(`You typed: ${data}`);
});
2. Buffer
二进制处理
// 创建 Buffer
const buf1 = Buffer.from('Hello');
const buf2 = Buffer.alloc(10); // 10字节空Buffer// 写入数据
buf2.write('World');// 转换格式
console.log(buf1.toString('base64')); // SGVsbG8=
console.log(Buffer.from('SGVsbG8=', 'base64').toString()); // Hello
四、其他关键 API
1. 定时器
// setTimeout (单次)
const timer = setTimeout(() => {console.log('Delayed 1s');
}, 1000);// clearTimeout(timer); // 取消// setInterval (循环)
const interval = setInterval(() => {console.log('Every 2s');
}, 2000);// clearInterval(interval);
2. child_process
子进程
const { exec, spawn } = require('child_process');// 执行 shell 命令
exec('ls -l', (err, stdout, stderr) => {console.log(stdout);
});// 流式处理
const ls = spawn('ls', ['-lh', '/usr']);
ls.stdout.on('data', data => {console.log(`stdout: ${data}`);
});
五、最佳实践要点
- 异步优先:始终优先使用异步 API(回调/Promise/async-await),避免阻塞事件循环
- 错误处理:所有回调函数必须检查
err
参数fs.readFile('file.txt', (err, data) => {if (err) {console.error('Read failed:', err.message);return;}// 正常处理 });
- 路径安全:使用
path.join()
替代字符串拼接,避免跨平台问题 - 流式处理:大文件操作必须使用 Stream,防止内存溢出
- 环境区分:通过
process.env.NODE_ENV
区分开发/生产环境
六、常用第三方模块推荐
模块名 | 用途 | 安装命令 |
---|---|---|
express | Web 框架 | npm install express |
axios | HTTP 客户端 | npm install axios |
lodash | 实用工具库 | npm install lodash |
moment | 日期处理 | npm install moment |
winston | 日志记录 | npm install winston |
dotenv | 环境变量加载 | npm install dotenv |
掌握这些核心 API 后,可快速应对 90% 的 Node.js 开发场景。建议结合官方文档深入理解:https://nodejs.org/api/
相关文章:
Node.js核心模块及Api详解
以下是 Node.js 最常用的核心模块及 API 详解,按使用频率和重要性分类整理: 一、高频核心模块 1. fs 文件系统 const fs require(fs); const fsPromises require(fs).promises; // Promise 版本// 异步读取文件(推荐) fs.read…...
解析keras.layers.Layer中的权重参数
文章目录 概要__init__()build()add_weight() 概要 keras.layers.Layers是所有层对象的父类,在keras.layers下所有实现类都是其子类,自定义层时需要继承该类。 init() Layer的构造函数,需要注意两个参数trainable和name trainable:指定该层…...
原型设计工具即时设计的简单使用攻略
即时设计是一款国产在线协同设计工具,支持从原型设计到开发交付的全流程,尤其擅长Web/App界面原型制作。其核心优势体现在: • 零门槛入门:浏览器直接访问无需安装,中文界面友好 • 资源生态完善:内置3000原…...
深入解析C++智能指针:从内存管理到现代编程实践
一、智能指针核心概念 1.1 智能指针的本质 智能指针是基于**RAII(资源获取即初始化)**的封装类,通过对象生命周期自动管理动态内存。与传统指针相比: 特性原始指针智能指针内存管理手动自动空指针检查需显式判断支持空状态检测…...
在 Langflow 中构建灵活的自定义组件:从基础到高级实践
本文深入探讨了如何在 Langflow 平台中创建功能丰富的自定义组件。通过详细的目录结构解析、分步实现指南和多个实战案例,帮助开发者掌握利用 Python 生态扩展低代码平台的方法,打造高效的数据处理流程。 理解组件架构设计 自定义组件是在 Langflow 中创…...
【数学建模】(时间序列模型)ARIMA时间序列模型
ARIMA时间序列模型详解及常见时间序列模型概览 文章目录 ARIMA时间序列模型详解及常见时间序列模型概览1 引言2 ARIMA模型的基本概念3 ARIMA模型的组成部分详解3.1 AR模型 (自回归模型)3.2 MA模型 (移动平均模型)3 I (差分) 4 ARIMA模型的建模步骤5 Python实现ARIMA模型6 常见时…...
模版的特性及其编译分离
1.模版的分类 模版参数分为 类型形参 和 非类型形参 类型形参:出现在模版参数列表中,跟在class和typename之后的参数类型名称 非类型形参:就是用一个常量作为类(函数)模版的一个参数,在类(函…...
8电池_多绕组反激式变压器均衡_4模式
(1)8节串联锂离子电池组 (2)多绕组双向反激式变压器,1个变压器解决多电池均衡 (3)亮点:支持1建切换4种均衡算法–>全网唯一 (4)多绕组变压器均衡也能设计多种均衡算法–>全网唯一 锂离子电池均衡,均衡拓扑,均衡算法...
6.1 python加载win32或者C#的dll的方法
python很方便的可以加载win32的方法以及C#编写的dll中的方法或者变量,大致过程如下。 一.python加载win32的方法,使用win32api 1.安装库win32api pip install win32api 2.加载所需的win32函数并且调用 import win32api win32api.MessageBox(0,"…...
STP学习
{所有内容均来自于西安欧鹏的陈俊老师} STP生成树 当二层交换机意外成环路的时候会发生: 1.广播风暴:当广播帧进入环路时,会被不断复制并传输,导致网络中的广播流量急剧增加,消耗大量的网络带宽,降低网络…...
特征值与特征向量:从理论到应用的全面解析
特征值与特征向量:从理论到应用的全面解析 一、特征值与特征向量核心概念 定义 对于方阵 ( A ),若存在标量 ( \lambda ) 和非零向量 ( v ),使得: [ A v \lambda v ] 则 ( \lambda ) 为特征值,( v ) 为对应的特征向…...
【Python】数组的条件逻辑统计运算元素排序
【Python】数组的条件逻辑&统计运算&元素排序: 一.条件逻辑二.统计运算三.数组元素排序检索数组元素是否满足条件查找数组的唯一元素判断元素是否在其他数组中 一.条件逻辑 import numpy as np arr_x np.array([1, 5, 7]) arr_y np.array([2, 6, 8]) arr_…...
数据流和重定向
1、数据流 不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两 条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去 标准输入(standard input,简称stdinÿ…...
Jetpack Compose 自定义组件完全指南
Jetpack Compose 自定义组件完全指南 Compose 的声明式 UI 范式为创建自定义组件提供了前所未有的灵活性。本指南将带你从基础到高级全面掌握 Compose 自定义组件的开发技巧。 一、自定义组件基础 1.1 基本结构 一个最简单的自定义组件: Composable fun Greeti…...
ETF 场内基金是什么?佣金最低又是多少呢?
嘿,朋友们,大家好啊,我是StockMasterX,今天咱们就坐下来慢慢聊聊这个话题,ETF 场内基金到底是个啥东西,它的佣金最低能到多少,真的是个值得深挖的问题。 说起ETF,我还记得刚入行那会…...
【C++篇】类与对象(中篇) 解密C++类的核心:六大默认成员函数详解与避坑指南
文章目录 前言一、类的六个默认成员函数二、构造函数1. 概念2. 特性(牢记) 三、析构函数1. 概念2. 特性(牢记) 四、拷贝构造函数1. 概念2. 特性(牢记) 五、赋值运算符重载1. 运算符重载2. 赋值运算符重载前…...
001 vue
https://cn.vuejs.org/ 文章目录 v-bindv-modelv-on修饰符条件渲染/控制:v-if v-show列表渲染 M:即Model,模型,包括数据和一些基本操作 V:即View,视图,页面渲染结果 VM:即View-Mode…...
web forms可视化开发显示的网页是用ExpressionWebEditorFrame控件,是IE内核还是简单的HTML解析?如何让他加载CSS和JS?
web forms可视化开发显示的网页是用ExpressionWebEditorFrame控件,是IE内核还是简单的HTML解析?如何让他加载CSS和JS? 1. ExpressionWebEditorFrame 控件的内核及解析机制 在 Visual Studio 中用于 Web Forms 可视化开发的 ExpressionWebEditorFrame 控件主要基于 Internet…...
$R^n$超平面约束下的向量列
原向量: x → \overset{\rightarrow}{x} x→ 与 x → \overset{\rightarrow}{x} x→法向相同的法向量(与 x → \overset{\rightarrow}{x} x→同向) ( x → ⋅ n → ∣ n → ∣ 2 ) n → (\frac{\overset{\rightarrow}x\cdot\overset{\righta…...
英伟达新一代GPU架构(50系列显卡)PyTorch兼容性解决方案
随着NVIDIA不断推出基于新架构的GPU产品,机器学习框架需要相应地更新以支持这些硬件。本文记录了在RTX 5070 Ti上运行PyTorch时遇到的CUDA兼容性问题,并详细分析了问题根源及其解决方案,以期为遇到类似情况的开发者提供参考。 在Anaconda虚…...
16.2Linux自带的LED灯驱动实验(详细编写)_csdn
这个实验不用自己编写代码。 1、在linux源代码中,打开 stm32mp15-pinctrl.dtsi 文件并进行修改: make uImage LOADADDR0XC2000040 -j8 //编译内核然后: 2、修改设备节点,打开 stm32mp157d-atk.dts: 其中࿱…...
Java 大视界 -- Java 大数据在智慧交通停车场智能管理与车位预测中的应用实践(174)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
HashMap 底层原理详解
1. 核心数据结构 JDK 1.7 及之前:数组 链表 JDK 1.8 及之后:数组 链表/红黑树(链表长度 ≥8 时转红黑树,≤6 时退化为链表) // JDK 1.8 的 Node 定义(链表节点) static class Node<K,V&g…...
重生之我是去噪高手——diffusion model
diffusion model是如何运作的? 想象一下,你有一张清晰的图片。扩散模型的核心思想分为两个过程: 前向过程(Forward Process / Diffusion Process):逐步加噪反向过程(Reverse Process / Denois…...
FfreeRTOS有阻塞作用的API
在 FreeRTOS 中,阻塞 API 是指那些会导致调用任务进入阻塞状态(Blocked State)的函数,即任务会暂时让出 CPU,直到某个条件满足(如超时、信号量可用、队列数据到达等)。以下是常见的阻塞 API 分类及示例: 1. 任务延迟(延时) vTaskDelay() 使任务阻塞指定的时间(以系统…...
app逆向专题二:app逆向流程
app逆向专题二:app逆向流程 一、app逆向说明二、拿到APP应用的apk三、使用工具进行查壳四、有壳需要先进行脱壳,拿到dex文件进行反编译五、使用Jadx-Gui或其他工具进行反编译,分析源码;六、根据app的抓包情况拿到加密的关键词参数…...
VMware 安装 Ubuntu 全流程实战指南:从零搭建到深度优化
在软件开发、系统测试以及技术学习等诸多场景中,使用虚拟机安装操作系统是一种灵活且高效的方式。Ubuntu 作为一款优秀的开源操作系统,在 VMware 虚拟机上的安装与优化备受关注。接下来,将为大家带来 VMware 安装 Ubuntu 的全流程实战指南&am…...
论文阅读笔记——RDT-1B: A DIFFUSION FOUNDATION MODEL FOR BIMANUAL MANIPULATION
RDT-1B 论文 模型表达与泛化能力:由于双臂操作中动作空间维度是单臂空间的两倍,传统方法难以建模其多模态分布。 数据:双臂数据少且不同机器人的物理结构和动作空间差异(如关节数、运动范围)导致数据分布不一致&#x…...
如何一天背300到500个单词
买一本有结构分析或词源注释的目标词汇书。 买一盒口香糖。 准备一摞空白的A4纸。 找一间用于冥想的黑屋子(眼晴闭上就可以了)。 将要背诵的单词进行分组: 5个一小组10个一中组50个一大组100个一个基本包或单元。给自己一个约定,比如背完一中组或一大组单词,嚼一粒口香糖…...
vs环境中编译osg以及osgQt
1、下载 OpenSceneGraph 获取源代码 您可以通过以下方式获取 OSG 源代码: 官网下载:https://github.com/openscenegraph/OpenSceneGraph/releases 使用 git 克隆: git clone https://github.com/openscenegraph/OpenSceneGraph.git 2、下载必要的第三方依赖库 依赖库 ht…...
C++ - 头文件基础(常用标准库头文件、自定义头文件、头文件引入方式、防止头文件重复包含机制)
一、头文件 在 C 中,头文件(.h)用于函数声明、类定义、宏定义等等 在 Visual Studio 中,头文件通常放在头文件目录中,头文件实现通常放在源文件目录中 二、常用标准库头文件 1、输入输出 <iostream> 标准输入…...
12款字重国外法国风格复古报纸日历设计衬线英文字体安装包 Claire Font Family
Claire 是一个带有坚固衬线的字体系列。该系列中的几种粗细字体非常适合设置大量连续文本;另一方面,极轻和极重的字体在显示应用中配合使用效果很好。Clair 中的字体具有垂直轴,其设计让人联想到当代报纸字体以及 Century 模型中的十九世纪晚…...
Java 类型转换和泛型原理(JVM 层面)
一、类型转换 概念解释: 编译类型:在编译时确定,保存在虚拟机栈的栈帧中的局部变量表中; 运行类型:在运行时确定,由保存在局部变量表中变量指向的堆中对象实例的类型决定(存储在对象头中&…...
ffmpeg基础知识入门
文章目录 📦 1. **容器(Container)**✅ 定义:✅ 举例:✅ 功能: 📶 2. **媒体流(Stream)**✅ 定义:✅ 举例:✅ 流和容器关系: …...
k8s 1.23升级1.24
0、简介 这里只用3台服务器来做一个简单的集群,当前版本是1.23.17目标升级到1.24.17 地址主机名192.168.160.40kuber-master-1192.168.160.41kuber-master-2192.168.160.42kuber-node-1 我这里设置的master2可调度pod,将master2的污点去掉 kubectl de…...
MIPI与DVP接口摄像头:深度解析与应用指南
1、MIPI 1.1 MIPI简介 MIPI是什么?MIPI:mobile industry processor interface移动行业处理器接口。它是一个由Intel、Motorola、Nokia、NXP、Samsung、ST(意法半导体)和TI(德州仪器)等公司发起的开放标准…...
liunx输入法
1安装fcitx5 sudo apt update sudo apt install fcitx fcitx-pinyin 2配置为默认输入法 设置-》系统-》区域和语言 点击系统弹出语言和支持选择键盘输入法系统 3设置设置 fcitx-configtool 如果没显示需要重启电脑 4配置fcitx 把搜狗输入法放到第一位(点击下面…...
马吕斯定律(Malus‘s Law)
马吕斯定律(Maluss Law)详解 马吕斯定律是偏振光学中的基本定律,由法国物理学家**tienne-Louis Malus**于1809年发现,描述了**线偏振光**通过检偏器后的光强变化规律。 2. 实验验证 3. 数学推导 4. 关键应用 5. 特殊情况讨论 …...
大厂算法面试 7 天冲刺:第6天-树与图深度剖析——高频算法面试题 Java 实战
🧠 第6天:树与图深度剖析——高频算法面试题 & Java 实战 📚 一、核心知识概览 Overview 1. 树(Tree) 树是一种非线性数据结构,常见于面试中的二叉树(Binary Tree)、二叉搜索树…...
C语言编译和链接错题
一、错题重现 1.用在switch语句中的关键字不包含哪个?( ) A.continue B.break C.default D.case 2.下面代码的结果是:( ) A.3 B.4 C.随机值 D.5 3.下面那个不是转义字符? A.\n B.\060 C.\q D.\b 二、错因分析及思考 1.题目看…...
吴恩达深度学习复盘(7)一个简单训练示例
简介 本篇简单讲解简单的神经网络训练。通过回顾逻辑回归模型训练,了解神经网络训练的相关内容。比如训练步骤、损失函数、优化算法以及深度学习库的使用,了解训练过程中的相关概念。 例子 手写数字识别(判断是 0 还是 1)。这是…...
道路坑洼目标检测数据集-665-labelme
文章目录 1.介绍3.标签介绍4.标注工具5.数据集下载 1.介绍 目标:从道路图像中检测坑洼; 应用:检测道路地形和坑洼可实现平稳行驶,小型数据集常常用于学习和学术研究; 详细信息: 665 张图、1740个在坑洼处标…...
提升移动端用户体验:解决输入框被软键盘遮挡的有效方法
解决移动端输入框被软键盘覆盖的问题 在开发移动端网页时,如果页面包含输入框,则可能会遇到输入框被弹出的软键盘遮挡的问题。为了解决这个问题,我们需要理解两种常见的情况以及相应的解决策略。 浏览器未主动聚焦到输入框 现代浏览器和移…...
函数极限常见计算方法集锦
本文非常直接,如标题所见就是一个常见的计算方式极限方法的集锦。 所以内在逻辑性确实不强,主要通过例题的形式阐述。 添项减项 当题目出现了交错的形式便可以考虑添项减项。 一般而言我们会加一项交错项,减一项交错项。 例如出现 A B …...
Tomcat的部署
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和 并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML页面的功能,它还是一个Servlet和 JSP容器 官网:Apache Tomcat - Welco…...
Ubuntu(CentOS、Rockylinux等)快速进入深度学习pytorch环境
这里写自定义目录标题 安装进入系统(如Ubuntu22.04)安装anacondapip、conda换源pip换源conda换源 安装nvidia安装pytorch环境针对于wsl的优化 安装进入系统(如Ubuntu22.04) docker 、 wsl 、 双系统 、服务器系统 推荐 Ubuntu 20…...
AI 如何帮助我们提升自己,不被替代
在当今快速发展的时代,人工智能(AI)正逐渐渗透到生活的方方面面。许多人担心 AI 会取代人类的工作,然而,AI 更多的是作为一种强大的赋能工具,帮助我们提升自身能力,让我们在工作中更具竞争力。以…...
ROS2 多机时间同步(Chrony配置简明指南)
适用场景: 主机运行 ROS2 Humble(发布 /scan 等),板子运行 ROS2 Foxy(发布 /tf 等),两边通过 ROS_DOMAIN_ID 跨平台通讯。需要保证系统时间对齐,避免 TF 插值失败、建图抖动等问题。…...
C 语言排序算法:从基础到进阶的全面解析一、引言
一、引言 在 C 语言编程领域,排序算法是一项基础且核心的技能。无论是处理海量数据,还是优化程序性能,选择合适的排序算法都至关重要。本文将深入剖析 C 语言中常见的几种排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、…...
蓝桥云客--团队赛
2.团队赛【算法赛】 - 蓝桥云课 问题描述 蓝桥杯最近推出了一项团队赛模式,要求三人组队参赛,并规定其中一人必须担任队长。队长的资格很简单:其程序设计能力值必须严格大于其他两名队友程序设计能力值的总和。 小蓝、小桥和小杯正在考虑报名…...