带你一起撸一遍 nodejs 常用核心模块(二)
生活随笔
收集整理的這篇文章主要介紹了
带你一起撸一遍 nodejs 常用核心模块(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前沿:核心模塊二主要是和流相關的部分,當然要想給這一塊有清楚的了解,你需要對核心模塊(一)中的內容有一些了解。
fs模塊
fs模塊的常見方法(所有的讀方法,文件必須存在,不存在就會報錯,所有的寫方法,如果文件不存在,則創建該文件):
以上三個方法的弊端:都是將文件整體讀出或者寫入。
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 時,則會返回 false。if (!flag) { //內部緩沖超過highWaterMarkrs.pause()} }) let wsIndex = 1; ws.on('drain', () => {console.log('ws'+wsIndex++)rs.resume() }) // 1 2 ws1 3 4 ws2 5 6 ws3 復制代碼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 常用核心模块(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Studio:依赖异常问
- 下一篇: 浅谈Angular网络请求