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
英文地址,請注明出處:http://en.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操作執行器源碼

作者源碼閱讀筆記主要采用金山云文檔記錄的,所有的交互圖和代碼閱讀筆記都是記錄在云文檔里面,本平臺的文檔編輯實在不方便,會導致我梳理的交互圖和文檔失去原來的格式,所以整理在文檔里面,供大家閱讀交流. 【金山文檔…