nodejs03-常用模块

nodejs 常用的核心模块
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,
它允许 JavaScript 运行在服务器端。Node.js 拥有丰富的标准库,也就是核心模块,
这些模块提供了各种功能,
使得开发服务器端应用程序变得简单高效。以下是一些 Node.js 中常用的核心模块

1:http 和 https:
用于创建 HTTP 和 HTTPS 服务器
const http = require(‘http’);
http.createServer((req, res) => {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Hello World\n’);
}).listen(1337, ‘127.0.0.1’);
console.log(‘Server running at http://127.0.0.1:1337/’);

2:fs(文件系统):
用于读写文件系统中的文件。
示例代码:
const fs = require(‘fs’);
fs.readFile(‘input.txt’, ‘utf8’, (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});

3:path:
用于处理文件和目录的路径。
示例代码:
const path = require(‘path’);
常用方法

  1. path.join([…paths]) - 连接路径
    const fullPath = path.join(‘/user’, ‘documents’, ‘file.txt’);
    console.log(fullPath);
    // 在 Unix 上输出: /user/documents/file.txt
    // 在 Windows 上输出: \user\documents\file.txt

  2. path.resolve([…paths]) - 解析绝对路径
    const absolutePath = path.resolve(‘src’, ‘app.js’);
    console.log(absolutePath);
    // 输出当前工作目录下的绝对路径,如: /home/user/project/src/app.js

  3. path.basename(path[, ext]) - 获取文件名
    console.log(path.basename(‘/user/docs/file.txt’)); // file.txt
    console.log(path.basename(‘/user/docs/file.txt’, ‘.txt’)); // file

  4. path.dirname(path) - 获取目录名
    console.log(path.dirname(‘/user/docs/file.txt’)); // /user/docs

  5. path.extname(path) - 获取扩展名
    console.log(path.extname(‘index.html’)); // .html
    console.log(path.extname(‘file’)); // 空字符串
    path.sep - 平台特定的路径分隔符 console.log(path.sep); // Windows 输出 ‘’, Unix 输出 ‘/’
    path.delimiter - 平台特定的路径分隔符(用于 PATH 环境变量) console.log(path.delimiter); // Windows 输出 ‘;’, Unix 输出 ‘:’

路径规范化
使用 path.normalize(path) 可以规范化路径,处理多余的 .、… 和分隔符:
console.log(path.normalize(‘/user//docs/…/file.txt’)); // /user/file.txt

路径解析与格式转换
path.parse(path) - 解析路径为对象
const pathObj = path.parse(‘/user/docs/file.txt’);
console.log(pathObj);
/*
{
root: ‘/’,
dir: ‘/user/docs’,
base: ‘file.txt’,
ext: ‘.txt’,
name: ‘file’
}
*/

path.format(pathObject) - 从对象构建路径
const pathStr = path.format({
dir: ‘/user/docs’,
name: ‘file’,
ext: ‘.txt’
});
console.log(pathStr); // /user/docs/file.txt
实际应用示例
示例 1: 构建跨平台的文件路径
const configPath = path.join(__dirname, ‘config’, ‘settings.json’);
console.log(configPath);
示例 2: 处理用户上传的文件
function saveUploadedFile(uploadDir, originalName) {
const ext = path.extname(originalName);
const baseName = path.basename(originalName, ext);
const timestamp = Date.now();
const newFileName = ${baseName}_${timestamp}${ext};

return path.join(uploadDir, newFileName);
}

示例 3: 检查文件扩展名
function isImageFile(filename) {
const ext = path.extname(filename).toLowerCase();
return [‘.jpg’, ‘.jpeg’, ‘.png’, ‘.gif’].includes(ext);
}

os:
提供有关操作系统、计算机和网络接口的信息
const os = require(‘os’);
console.log(os.platform()); // 输出: 例如 ‘darwin’、‘win32’ 或 ‘linux’

url:
用于解析和格式化 URL
const url = require(‘url’);
const myUrl = new URL(‘http://www.example.com’);
console.log(myUrl.hostname); // 输出: www.example.com

events:
提供基本的 EventEmitter 实现,用于处理事件
const EventEmitter = require(‘events’);
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on(‘event’, () => {
console.log(‘an event occurred!’);
});
myEmitter.emit(‘event’); // 输出: an event occurred!

util:
提供了一些实用工具函数,如 util.promisify,用于将回调风格的函数转换为返回 Promise 的函数。
示例代码:
const util = require(‘util’);
const fs = require(‘fs’);
const stat = util.promisify(fs.stat);
stat(‘.’).then((stats) => {
console.log(It's a ${stats.isDirectory() ? 'directory' : 'file'});
}).catch((error) => {
console.error(error);
});

stream:
提供了多种流对象,如可读流(Readable)、可写流(Writable)、双工流(Duplex)和转换流(Transform),用于高效地处理流式数据。
示例代码:使用 Readable 流:
const { Readable } = require(‘stream’);
const readableStream = Readable({
read() {} // 这里可以添加读取逻辑,但在这个例子中不实现任何读取逻辑。
});
readableStream.push('Hello ');
readableStream.push(‘World!\n’);
readable

=============================================
事件监听案例
const EventEmitter = require(‘events’);
var eventEmitter = new EventEmitter();

eventEmitter.on(‘click’, () => {
console.log(‘data received successfully.’);
});

eventEmitter.emit(‘click’,demo);

文件读取和写入:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93208.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多路混音声音播放芯片型号推荐

以下是唯创知音旗下主流的多路声音播放芯片深度解析,结合精准参数、丰富场景及技术特性,满足智能设备多样化音频需求:一、WTV380/890 系列:高集成多模态交互芯片核心参数通道能力:支持8 路独立语音输出,可同…

【C++】自研基 2 Cooley–Tukey

“自研基 2 Cooley–Tukey:倒位序 逐级蝶形,入口 fft(int N, complex f[])”拆成三件事它在讲什么 “基 2 Cooley–Tukey” 指的是最常见的 FFT 算法:长度 N 必须是 2 的整数次幂,把离散傅里叶变换分解成一层一层的“2 点蝶形”运…

小白挑战一周上架元服务——ArkUI04

文章目录前言一、ArkUI是何方神圣?二、声明式UI三、组件1.基础组件2.布局容器组件3.导航组件4.自定义组件5.组件生命周期四、状态管理1.State装饰器: 状态变量2.Prop装饰器:父子单向同步3.Link装饰器:父子双向同步4.Provide/Consume装饰器&am…

剧本杀小程序系统开发:构建剧本杀社交新生态

在社交需求日益多样化的今天,剧本杀凭借其独特的社交属性,成为了人们热衷的社交娱乐方式之一。而剧本杀小程序系统开发,则进一步拓展了剧本杀的社交边界,构建起一个全新的剧本杀社交新生态,让玩家在推理与角色扮演中&a…

AI提高投放效率的核心策略

内容概要人工智能技术正深刻改变着广告投放领域,其核心价值在于显著提升投放效率。通过融合智能算法优化、实时数据分析与自动化投放流程,AI系统能够以前所未有的速度和精度处理海量信息,驱动更精准的营销决策。这不仅大幅缩短了传统人工操作…

OpenBMC 中命令模式的深度解析:从原理到实现

引言 在 OpenBMC 的设计中,命令模式(Command Pattern)被广泛应用于各种场景,特别是 IPMI 命令处理、异步操作封装和用户请求管理等。本文将深入分析 OpenBMC 中命令模式的实现原理、架构设计以及完整的执行流程,并通过…

从0开始跟小甲鱼C语言视频使用linux一步步学习C语言(持续更新)8.15

第十七天 第五十七,五十八,五十九和六十集 第五十六集 删除链表结点 没什么好说的关键部分代码如图 链表的插入操作 依旧没有啥可以说的代码部分大家看视频就能看懂,大家应该是没有什么问题的吧? 第五十七集 共用体形式结构与结构…

云服务器网站无法访问的系统化故障排查指南及多维度解决方案

当云服务器上的网站突然无法访问时,这种突发状况往往让人措手不及。别担心,我们可以通过系统化的排查流程快速定位问题根源。以下是经过实战验证的故障排除指南,帮您分步解决网站访问异常问题。一、基础状态确认 服务器的生命体征就像人体的脉…

strings命令和findstr命令验证iso文件中ntkrnlmp.exe系统版本

strings命令和findstr命令验证iso文件中ntkrnlmp.exe系统版本D:\chsads3647\i386>expand.exe Microsoft (R) File Expansion Utility Version 5.2.3647.0 版本所有 (c) Microsoft Corporation. 保留所有权利。未指定文件。D:\chsads3647\i386>strings.exe ntkrnlmp.exe …

C语言:指针(5)

1. sizeof与strlen的对比1.1 sizeofsizeof属于是操作符,用于计算变量所占的空间大小,单位为字节。如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。sizeof只计算数据在内存中所占的空间大小,而不在乎内存中存…

rent8 安装部署教程之 Windows

1. Apache 安装与配置 1.1. 获取并解压 Apache 在 Apache Lounge 网址下载编译版的 Apache。下载完成后,将压缩包解压到 d:\web\Apache24 作为 Apache 的安装目录。 1.2. 配置 Apache 打开配置文件 conf\httpd.conf,找到第 37 行配置。 ​ Define SRVROO…

边缘智能实战手册:攻克IoT应用三大挑战的AI战术

前言:在当前的AIoT(人工智能物联网)赛道上,将AI能力下沉至边缘设备已不再是“要不要做”的选择题,而是“如何做好”的必答题。然而,在实际项目中,工程师们常常会遇到性能、功耗和隐私这“三座大…

【React】use-immer vs 原生 Hook:谁更胜一筹?

1.概述 use-immer 不属于官方 Hook,是社区维护的第三方库!use-immer 通过封装 Immer 的不可变更新机制,为 React 开发者提供了一种更直观、高效的状态管理方式。它尤其适合处理复杂嵌套状态或需要频繁更新的场景,同时保持了与 Re…

【案例】Vue3 实现高性能级横向循环滚动生产线效果:基于 requestAnimationFrame 的流畅动画方案

动画效果在工业监控系统、生产看板等场景中,经常需要模拟生产线的动态运行效果。本文将基于 Vue3 和 requestAnimationFrame 实现一个高性能的横向循环滚动效果,完美模拟生产线传输带的视觉体验。我们将从代码实现到原理分析,全面讲解如何打造…

万字长文解码如何玩转Prompt(附实践应用)

在AI技术迅猛发展的今天,如何与大型语言模型高效“对话”已成为释放其潜力的关键。本文深入探讨了提示词工程(Prompt Engineering)这一新兴领域,系统解析了从基础概念到高级技巧的完整知识体系,并结合“淘宝XX业务数科…

easyExcel嵌套子集合导出Excel

我想要的Excel效果说明: 1.创建两个自定义注解:ExcelMerge(表示主对象内的单个属性,后续会根据子集合的大小合并下面的单元格),ExcelNestedList(表示嵌套的子集合) 2.NestedDataConverter.java 会把查询到的数据转换为一行一行的,相当于主表 left join 子表 ON 主.id子.主id的形…

基于 C# WinForm 字体编辑器开发记录:从基础到进阶

目录 基础版本实现 进阶版本改进 字体设置窗体增强 主窗体改进 功能对比 项目在本文章的绑定资源中免费的,0积分就可以下载哦~ 在 Windows Forms 应用开发中,字体编辑功能是许多文本处理软件的基础功能。本文将分享一个简易字体编辑器的开发过程&a…

Linux基本使用和Java程序部署(含 JDK 与 MySQL)

文章目录Linux 背景知识Linux 基本使用Linux 常用的特殊符号和操作符Linux 常用命令文本处理与分析系统管理与操作用户与权限管理文件/目录操作与内容处理工具Linux系统防火墙Shell 脚本与实践搭建 Java 部署环境apt(Debian/Ubuntu 系的包管理利器)介绍安…

抗辐照CANFD通信芯片在高安全领域国产化替代的研究

摘要:随着现代科技的飞速发展,高安全领域如航空航天、卫星通信等对电子设备的可靠性与抗辐照性能提出了极高的要求。CANFD通信芯片作为数据传输的关键组件,其性能优劣直接关系到整个系统的稳定性与安全性。本文聚焦于抗辐照CANFD通信芯片在高…

Mybatis 源码解读-SqlSession 会话源码和Executor SQL操作执行器源码

作者源码阅读笔记主要采用金山云文档记录的,所有的交互图和代码阅读笔记都是记录在云文档里面,本平台的文档编辑实在不方便,会导致我梳理的交互图和文档失去原来的格式,所以整理在文档里面,供大家阅读交流. 【金山文档…