網(wǎng)站首頁 編程語言 正文
一、path模塊
1. 常用方法介紹
Node中的path模塊是用來操作文件路徑的內(nèi)置模塊,主要用于字符串路徑操作,其有多種用法用來返回不同的路徑信息。
- path.join
path.join()方法主要用于連接路徑。該方法的主要作用就是將所有傳入的路徑片段連接在一起,然后規(guī)范化生成的路徑。需要注意的是,在Join操作中’/'會被當(dāng)做根路徑。
例如:
var path = require('path');
var p = path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
console.log(p); // 輸出: '/foo/bar/baz/asdf'
- path.basename
path.basename()方法主要用于獲取路徑中的文件名。在提取文件名的同時,也可以使用選項參數(shù)來去除文件的擴展名。
例如:
var path = require('path');
console.log(path.basename('/foo/bar/baz/asdf/quux.html')); // 輸出: 'quux.html'
console.log(path.basename('/foo/bar/baz/asdf/quux.html', '.html')); // 輸出: 'quux'
- path.extname
path.extname()方法主要用于獲取路徑中文件的擴展名。
例如:
var path = require('path');
console.log(path.extname('index.html')); // 輸出: '.html'
console.log(path.extname('index.coffee.md')); // 輸出: '.md'
console.log(path.extname('index.')); // 輸出: '.'
console.log(path.extname('index')); // 輸出: ''
console.log(path.extname('.index')); // 輸出: ''
有了path模塊,我們就可以方便地進(jìn)行文件路徑的操作,對于文件系統(tǒng)的操作無疑提供了很大的便利。只要掌握了各個方法的特點和使用方式,就可以靈活應(yīng)用于實際情況中。
2.__dirname
在Node.js中,__dirname是一個全局變量,它提供了當(dāng)前執(zhí)行腳本所在的目錄的絕對路徑。這個全局變量的值和你在命令行中所在的位置沒有任何關(guān)系,它只和執(zhí)行的node腳本有關(guān)。
__dirname的主要用處是用來構(gòu)建文件或者目錄的路徑。因為無論你的進(jìn)程在哪里運行,__dirname始終被設(shè)置為被執(zhí)行的.js文件所在的文件夾的絕對路徑,這使得它比較可靠和方便。
例如:
假設(shè)你有以下文件結(jié)構(gòu):
- /home/user/project
- server.js
- /assets
- style.css
而你在/home/user/project下運行了一段如下的node.js代碼:
console.log(__dirname);
無論你在哪里執(zhí)行上述命令(例如在項目的父目錄或者系統(tǒng)的根目錄),它都將輸出:“/home/user/project”,因為這就是server.js文件所在的目錄。
同樣,__dirname適合用來動態(tài)地構(gòu)建文件路徑,例如,如果你想在server.js中讀取style.css文件,
var fs = require('fs');
var path = require('path');
fs.readFile(path.join(__dirname, 'assets/style.css'), function(err, data) {
if (err) {
throw err;
}
console.log(data);
});
上述代碼中,我們使用了path.join()方法,這是因為不同的操作系統(tǒng)文件路徑的分隔符不同,path.join()方法能確保我們總是得到正確的文件路徑。
二、fs模塊
Node.js fs(文件系統(tǒng))模塊可以對系統(tǒng)文件進(jìn)行I/O操作。所有的文件系統(tǒng)操作都提供了異步(非阻塞)和同步(阻塞)兩種形式。
fs模塊提供的API基本上可以分為以下三類:
- 文件屬性讀寫 API
- 文件內(nèi)容讀寫 API
- 目錄操作 API
下面詳細(xì)介紹一下fs.readFile和fs.writeFile的用法:
- fs.readFile:這個方法主要是用來讀取文件內(nèi)容的。語法如下:
fs.readFile(path[, options], callback)
- path - 文件的地址
- options - 選項,包括 encoding(文件編碼)、flag(文件操作符,默認(rèn) ‘r’)
- callback - 數(shù)據(jù)回調(diào)函數(shù),參數(shù)為(err, data),err 為錯誤信息,data為讀取到的數(shù)據(jù)
讀取一個文本文件的例子:
const fs = require('fs');
fs.readFile('/path/to/file.txt', 'utf8', function(err, data){
if (err) throw err;
console.log(data);
});
- fs.writeFile:這個方法主要是用來寫入文件內(nèi)容的。語法如下:
fs.writeFile(file, data[, options], callback)
- file - 文件路徑
- data - 要寫入的內(nèi)容,可以是字符串或 Buffer 對象
- options - 選項,包括 encoding(編碼)、mode(權(quán)限)、flag(操作符)等
- callback - 回調(diào)函數(shù)
寫入一個文本文件的例子:
const fs = require('fs');
fs.writeFile('/path/to/file.txt', 'Hello World', function(err){
if (err) throw err;
console.log('The file has been saved!');
});
在實際開發(fā)場景,假設(shè)我們想輸入特定數(shù)據(jù)到一個log文件,同時也要讀取其內(nèi)容展示到客戶端,這時候我們就可以使用fs模塊。示例代碼如下:
const fs = require('fs');
let contentToWrite = 'Hello, this is a log message!';
let logFilePath = '/path/to/log.txt';
// 寫入 log
fs.writeFile(logFilePath, contentToWrite, function(err){
if (err) throw err;
console.log('Log has been written to the file!');
});
// 讀取 log
fs.readFile(logFilePath, 'utf8', function(err, data){
if (err) throw err;
console.log('Log Content:', data);
});
三、node中的模塊介紹
可能看到這里,0基礎(chǔ)的小伙伴會有些疑惑,這些path,fs哪來的,怎么引入了就可以直接使用呢?那么接下來就簡單介紹一下node中的模塊
在 Node.js 中,存在三種主要類型的模塊,它們是:
- 內(nèi)置核心模塊:這些模塊是與 Node.js 自身一起提供的,不需要額外安裝就可以使用。如 HTTP、path、fs、stream 等。
例如,使用 http 模塊創(chuàng)建 HTTP 服務(wù)器:
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8080);
- 本地模塊:這些模塊是由開發(fā)人員自己編寫的,用于組織自身應(yīng)用程序的代碼。它們可以是一組經(jīng)常使用的函數(shù),或者是提供特定功能的對象。
例如,創(chuàng)建一個名為 greeting 的本地模塊,它包含一個函數(shù),用來返回問候語:
// greeting.js
module.exports.sayHello = function(name){
return "Hello, " + name;
}
在另一個文件中引用和使用它:
// app.js
const greeting = require('./greeting');
console.log(greeting.sayHello("John"));
- 第三方模塊:這些模塊是從 npm (Node Package Manager) 倉庫安裝并使用的模塊。這些模塊由社區(qū)開發(fā)人員創(chuàng)建并維護(hù),用于提供在許多應(yīng)用中都會使用到的功能。
例如,安裝并使用 express 模塊來創(chuàng)建一個簡單的 web 服務(wù)器:
// 使用 npm 安裝 express
// npm install express
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
原文鏈接:https://blog.csdn.net/jieyucx/article/details/131608848
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-07-21 Gitee:使用ssh提交代碼卻提示:DeployKey does not support push
- 2022-08-20 Redis+AOP+自定義注解實現(xiàn)限流_Redis
- 2023-01-23 React新擴展函數(shù)setState與lazyLoad及hook介紹_React
- 2023-01-05 Python?Flask?模型介紹和配置方法_python
- 2022-05-29 利用Python將list列表寫入文件并讀取的方法匯總_python
- 2023-05-20 Android內(nèi)存泄漏導(dǎo)致原因深入探究_Android
- 2022-06-24 React如何使用refresh_token實現(xiàn)無感刷新頁面_React
- 2022-12-31 React實現(xiàn)合成事件的源碼分析_React
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支