日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

带你一起撸一遍 nodejs 常用核心模块(二)

發布時間:2025/6/17 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带你一起撸一遍 nodejs 常用核心模块(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前沿:核心模塊二主要是和流相關的部分,當然要想給這一塊有清楚的了解,你需要對核心模塊(一)中的內容有一些了解。

fs模塊

fs模塊的常見方法(所有的讀方法,文件必須存在,不存在就會報錯,所有的寫方法,如果文件不存在,則創建該文件):

  • fs.readFile() --- fs.readFileSync()
  • let fs=require('fs'); //是把整個文件作為一個整體 fs.readFile('./1.txt',{encoding:'utf8'},function (err,data) {console.log(err);console.log(data); }); //同步方法是沒有回調函數的 let result=fs.readFileSync('./1.txt',{encoding: 'utf8'}); console.log(result); 復制代碼
  • fs.writeFile() ---fs.weiteFileSync()
  • const fs=require('fs'); //會覆蓋文件原有內容 //fs.writeFile('./2.txt','123',{encoding: 'utf8'},(err) => { // console.log('write OK'); //}) fs.writeFileSync('./3.txt','456'); 復制代碼
  • fs.appendFile()
  • const fs=require('fs'); //writeFile flags=w 寫入,如果文件已經存在,則刪除掉文件后再寫入 //fs.writeFile('./4.txt','789',{flag:'a'}); //給文件追加內容,不會覆蓋原有內容 fs.appendFile('./4.txt','789'); 復制代碼

    以上三個方法的弊端:都是將文件整體讀出或者寫入。

  • fs.open()
  • fs.open(src, 'r', (err,fd)) //第一個參數表示文件,第二個表示什么方式(r, r+, w, w+, a, a+), 第三個是回調,其中 fd是文件描述符 復制代碼
  • fs.read() //將內容放到內存中
  • let buffer=Buffer.alloc(6);//[0,1,2,3,4,5] fs.read(fd,buffer,0,3,3,(err,bytesRead) => { //文件描述符,buffer,buffer0的位置,buffer的長度,文件讀取的位置, //回調 bytesRead表示實際字節console.log(buffer.toString()); }); 復制代碼
  • fs.write()
  • let buffer=Buffer.from('天天向上');//[0,1,2,3,4,5,6,7,8,9,10,11] //fd buffer offset fs.write(fd,buffer,3,6,3,(err,bytesWritten) => { //文件描述符,buffer,buffer起始位置,buffer長度,文件寫入位置, //回調 bytesWritten表示實際字節console.log(err);fs.fsync(fd,(err) => {fs.close(fd,(err) => {console.log('關閉文件');});}); }); 復制代碼
  • fs.createReadStream()

  • fs.fsync()

  • fs.createWriteStream()

  • 來一個小例子,有助于理解

    // pipe let fs = require('fs'); let rs = fs.createReadStream('./1.txt',{highWaterMark:1 }) let ws = fs.createWriteStream('./5.txt',{highWaterMark:2 }) let index = 1; rs.on('data', (data) => {console.log(index++)let flag = ws.write(data); // 當內部的可寫緩沖的總大小小于 highWaterMark 設置的閾值時,//調用 writable.write() 會返回 true。 一旦內部緩沖的大小達到或超過 highWaterMark 時,則會返回 falseif (!flag) { //內部緩沖超過highWaterMarkrs.pause()} }) let wsIndex = 1; ws.on('drain', () => {console.log('ws'+wsIndex++)rs.resume() }) // 1 2 ws1 3 4 ws2 5 6 ws3 復制代碼
  • fs.stat()
  • //讀取文件的狀態;不建議在調用 fs.open() 、fs.readFile() 或 fs.writeFile() 之前使用 fs.stat() 檢查一個文件是否存在。 //作為替代,用戶代碼應該直接打開/讀取/寫入文件,當文件無效時再處理錯誤。//如果要檢查一個文件是否存在且不操作它,推薦使用 fs.access()。let fs = require('fs'); fs.stat('./1.txt', (err, data) => {console.log(data) //列舉幾個常用的屬性 size,ctime,birthtime,mtime }) 復制代碼
  • fs.access() 文件是否存在
  • let fs = require('fs'); fs.access('./1.txt', (err) => {console.log(err) }) 復制代碼
  • fs.mkdir()
  • //創建目錄 創建目錄的時候一定要注意 父目錄一定要存在 let fs = require('fs'); fs.mkdir('./a/b', (err) => { //如果a目錄不存在 則會報錯console.log(err) }) 復制代碼
  • fs.rmdir()
  • //刪除目錄 同理 如果a目錄不是空的,需要刪除a里面的從里面往外一層一層刪除,否則報錯,directory not empty let fs = require('fs'); fs.rmdir('./a', (err) => {console.log(err) }) 復制代碼

    TCP模塊

    //傳輸層 http websocket都是基于tcp tcp是一個可讀可寫流// 傳輸層 http websocket (應用起來基本一樣) let net = require('net');// 套接字 let server = net.createServer(); // 鏈接時會執行此方法,每次鏈接都會產產生一個socket對象 // http規定的頭 設置一些頭 // socket是一個可讀可寫的流 Duplex server.on('connection',function(socket){// socket 沒有規則 我們可以用tcp 模擬httpsocket.setEncoding('utf8');socket.on('data',function(data){console.log(data);});//模擬socket.write(` HTTP/1.1 200 ok Content-Length: 5hello`); }); server.listen(3000); //當我們打開瀏覽器 localhost:3000時 可以看到hello 復制代碼

    http模塊

    //常見用法 var http=require("http");http.createServer(function(req,res){res.writeHead(200,{"content-type":"text/plain"});res.write("hello nodejs");res.end(); }).listen(3000); //在瀏覽器中輸入 localhost:3000 我們可以看到hello nodejs 復制代碼

    以上就是nodejs的常用核心模塊的一部分,因為涉及的內容比較多并沒有深入進去,其實每個部分都可以展開里面有很多知識,很多深入的知識我本人也不是很了解,希望上面的一些核心內容能夠幫助到你,當然有很多不足之處希望朋友們提出指正。也希望和各位朋友一起學習分享!

    后記:

    本文涉及到的流更加深入一點的可以看

    • 面試高級前端工程師必問之流-stream

    相關內容:

    • nodejs核心模塊(一)

    總結

    以上是生活随笔為你收集整理的带你一起撸一遍 nodejs 常用核心模块(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。