首页
/
每日頭條
/
科技
/
如何使用nodejs的fs庫來讀寫文件
如何使用nodejs的fs庫來讀寫文件
更新时间:2026-05-16 11:37:31

前面我們通過文章【Node實戰002:一個簡單的hello world實例 】簡單地了解了下NodeJS搭建Web服務器,這時我們可以在浏覽器通過ip加端口(不帶端口默認訪問80)來訪問我們的Node服務。我們知道一個Web服務一遍都有幾十上百個頁面,當我們訪問不同的地址時會返回不同的頁面内容。但是這裡我們不管輸入任何地址返回的都是“hello world”,這顯然無法滿足我們的業務需求。這是為什麼呢?因為我們在服務中沒有對請求做任何處理,不管你請求任何内容都統一返回“hello world”。

如何使用nodejs的fs庫來讀寫文件(FS文件操作實現請求動态響應文件)1

request

這裡我們需要根據業務需求對請求進行處理,這裡我們就需要來了解一個參數request。request包含了浏覽器的所有請求信息(打印了下有600多行參數信息),其中有個url屬性攜帶的就是前端發來的請求地址。我們可以通過該屬性來判斷當前請求的路由地址,這樣我們就可以根據不同的請求地址來響應不同的内容返回給前端。這時候當我們訪問http://127.0.0.1:8080/a.html就會輸出内容a.html,如果訪問的不在我們定義的路由中就返回404告訴浏覽器頁面沒有找到。

如何使用nodejs的fs庫來讀寫文件(FS文件操作實現請求動态響應文件)2

Html靜态目錄

但是這裡有個問題那就是每添加一條請求我們就需要後台去case一遍做相應的處理,這樣就會出現相當多的case(要是個遇到個成百上千個頁面的項目豈不是要被逼瘋)。而且關鍵的是每次修改都需要重啟服務才會生效,這樣重啟服務不僅影響服務使用也影響用戶體驗。所以這裡我們需要改善下像nginx那樣将文件全部放在html目錄然後根據路由讀取對應的文件,這樣即可以避免一路case判斷也不用重啟服務器。為什麼這樣就不需要重啟服務器呢?因為此時文件的内容并沒有寫在服務器中,而是在請求的時候去讀取文件内容。所以文件的增、删、改并不影響服務器運行,這樣我們就可以像nginx那樣随時發布更新代碼了。

如何使用nodejs的fs庫來讀寫文件(FS文件操作實現請求動态響應文件)3

FS文件操作

Node提供一組标準的文件操作API,直接通過require('fs') 引用該模塊即可使用一系列文件操作的API。讀取文件内容的函數有異步的 fs.readFile() 和同步的 fs.readFileSync(),一般我們都使用異步操作。因為異步性能更高,速度更快而且沒有阻塞,這樣就不會阻礙後面的代碼執行了。這裡我們需要用到fs模塊中的readFile方法,函數原型:fs.readFile(path,[options], [callback(err,data)])。其中參數filename為必填,表示要讀取的文件名。參數options為可選,如表示文件的字符編碼。參數callback是個回調函數,用來接收文件的内容。回調函數的第一個參數為讀取錯誤觸發的信息,第二個參數為成功讀取到的數據。

如何使用nodejs的fs庫來讀寫文件(FS文件操作實現請求動态響應文件)4

總結:

服務器響應用戶請求時不僅有文本信息還會有二進制文件(圖片、視頻、文件等),通過FS模塊我們可以方便快捷地将用戶所需的内容讀取出來并作為響應數據返回給浏覽器。以上内容是小編給大家分享的【Node實戰003:FS文件操作實現請求動态響應】。希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回複大家的。

如何使用nodejs的fs庫來讀寫文件(FS文件操作實現請求動态響應文件)5

為了方便學習,下面附上本文用到的源碼:

var http = require('http') var fs =require('fs') var server=http.createServer() server.on('request',(req,res)=>{ var filename='/html' req.url; fs.readFile(filename,(err,data)=>{ if(err){ res.write('404') } else{ res.end(data) } //res.end(data)相當于res.write(data); res.end(); })}) server.listen(8080,()=>{ console.log('服務器啟動成功了,通過 http://127.0.0.1:8080/ 來進行訪問') })

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
紅米note9pro和紅米note12pro對比(三星GalaxyM02參數報價對比)
紅米note9pro和紅米note12pro對比(三星GalaxyM02參數報價對比)
  手機機型:小米紅米Note 9 Pro | 三星Galaxy M02   最新價格:1599元| 即将上市   屏幕尺寸:6.67英寸 | 6.5英寸   屏幕類型:不支持或參數暫缺 | PLS TFT LCD   屏幕色彩:不支持或參數暫缺 | 1600萬   分辨率:2400×1080 | 1600×720   屏幕技術:120Hz刷新率 240Hz...
2026-05-16
金毛獅王哪個版本最好看(7個版本的金毛獅王)
金毛獅王哪個版本最好看(7個版本的金毛獅王)
     新版《倚天屠龍記》演員陣容公布,演員“黑子”出演“金毛獅王”謝遜。   在黑子衆多作品中,小8印象最深的就是《西遊記後傳》中的無天,那種睥睨天下舍我其誰不可一世的氣勢,演得太棒了。   黑子還塑造過金庸劇中很多經典角色,比如金輪國師、西毒歐陽鋒、黃藥師小徒弟馮默風、任我行等,這次出演金毛獅王,依舊值得期待~   隻要看過的小夥伴兒都知道,無論是哪個...
2026-05-16
元plus默認音樂軟件怎麼修改(元PLUS音響調節方案和音樂軟件分享及安裝方法)
元plus默認音樂軟件怎麼修改(元PLUS音響調節方案和音樂軟件分享及安裝方法)
  比亞迪元PLUS原車用的是迪瑞克品牌音響,這個牌子的音質說不上特别頂級,但是家用車來說絕對夠用,而且原車配備了6個音箱,音質調節好了,絕對效果也是杠杠的。調節方案有好幾種,我下面分享一種我車上調節的方案,此方案可以讓聲音厚實、有力,低音豐滿,高音不缺,有一定的亮度,低頻及中低頻能量較強,但響度卻比較大,能給人一種很近景的聲音厚實的感覺。感興趣的小夥伴也可...
2026-05-16
原神深境螺旋平民怎麼快速通關(原神深境螺旋第二期怎麼打)
原神深境螺旋平民怎麼快速通關(原神深境螺旋第二期怎麼打)
  原神深境螺旋第二期怎麼打?1.6版本深境螺旋用什麼陣容好?全新的深境螺旋開始了,12層挑戰依舊在等着大家,不過這次的12層會比之前的更加困難,不少的小夥伴在第九層就不行了。下面就來告訴大家如何完美的通關深境螺旋。      原神1.6版本深境螺旋通關攻略:   6月第二期深淵難度提高,使徒頻繁出沒。淵月祝福強擡風系角色,敵方多種元素盾同時在場,擴散破盾效...
2026-05-16
月老的傳說千裡姻緣一線牽完整版(網絡一線牽珍惜這段緣紅月傳說姻緣系統上線)
月老的傳說千裡姻緣一線牽完整版(網絡一線牽珍惜這段緣紅月傳說姻緣系統上線)
  千呼萬喚始出來,在大家的強烈建議中《紅月傳說》的姻緣系統終于上線啦!《紅月傳說》畫面的精美程度大家是知道的,除此之外還有很重要的一點老玩家也是知道的,那就是女玩家多呀!女玩家多的地方當然需要我們的姻緣系統上線啦!      《紅月傳說》此次推出的情緣系統,是建立在親密度的基礎上,玩家之間的交流,不管是組隊打boss,互相送禮物,甚至是私聊,都能夠獲得一定...
2026-05-16
Copyright 2023-2026 - www.tftnews.com All Rights Reserved