node.js基礎知識彙總
一、node介紹
1.node的應用場景
- 工具類 gulp webpack vite (node可以讓js執行在伺服器)
- 可以做服務端 優化ssr
- 可以做中間層 (解決跨域問題,格式化資料)
2.效能
- 非阻塞
- 非同步I/O(當這個方法呼叫完畢後不會立即返回結果)
- 事件驅動(釋出訂閱模式)
3.優勢
在Java、PHP或者.NET等伺服器語言中,會為每一個客戶端連線建立一個新的執行緒。而每個執行緒需要耗費大約2MB記憶體。也就是說,理論上,一個8GB記憶體的伺服器可以同時連線的最大使用者數為4000個左右。要讓web應用程式支援更多的使用者,就需要增加伺服器的數量,而web應用程式的硬體成本當然就上升了。
NodeJs不為每個客戶連線建立一個新的執行緒,而僅僅使用一個執行緒。當有使用者連線了,就觸發一個內部事件,通過非阻塞I/O、事件驅動機制,讓Node.js程式巨集觀上也是並行的。使用Node.js,一個8GB記憶體的伺服器,可以同時處理超過4萬用戶的連線。
二、node的全域性物件和模組
1.global
global是全域性物件,可以直接訪問裡面的屬性
裡面有:
- Buffer
- process
- setInterval,setTimeout,setImmediate
- console
- queueMicrotask
2.模組
- __dirname
- __filename
- exports
- module
- require()
三、process常用屬性或方法
process.platform 系統
process.kill 殺程序
process.exit 退出程序
process.nextTick node中的微任務 當前執行棧的底部 優先順序比promise高
process.cwd() 當前的工作目錄,是可變的,看命令在哪裡執行 (__dirname當前檔案所在的資料夾,此路徑不會發生變化)
process.env 環境變數(可以set,例如process.env.NODE_ENV)
process.argv 執行時所帶的引數
四、事件環機制
重要的三個階段
timer 存放定時器
poll 輪詢處理I/O回撥
check setImmediate
如果在 I/O 回撥的方法裡,setImmediate優先於 timer 執行
應為 poll 接下來是 check
nextTick 算是一個微任務,不在事件環中
在node 11 以上 巨集任務與微任務的執行順序與瀏覽器一樣
五、Buffer
JavaScript 語言自身只有字串資料型別,沒有二進位制資料型別。
但在處理像TCP流或檔案流時,必須使用到二進位制資料。因此在 Node.js中,定義了一個 Buffer 類,該類用來建立一個專門存放二進位制資料的快取區。在 Node.js 中,Buffer 類是隨 Node 核心一起釋出的核心庫。Buffer 庫為 Node.js 帶來了一種儲存原始資料的方法,可以讓 Node.js 處理二進位制資料,每當需要在 Node.js 中處理I/O操作中移動的資料時,就有可能使用 Buffer 庫。原始資料儲存在 Buffer 類的例項中。一個 Buffer 類似於一個整數陣列,但它對應於 V8 堆記憶體之外的一塊原始記憶體。Buffer屬於global上的屬性可以直接被訪問,讀取檔案,寫入(二進位制)從硬碟中讀取的資料都存到記憶體上,buffer可以和字串相互轉化
定義buffer的三種方式
let buf1 = Buffer.alloc(6); let buf2 = Buffer.from('珠峰'); let buf3 = Buffer.from([65,66,67]);
buffer中常用的方法
- buff.toString()
- buff.fill()
- buff.slice()
- buff.copy
- Buffer.concat()
- Buffer.isBuffer()
- indexOf
以上就是node.js基礎知識彙總的詳細內容,更多關於node.js基礎知識的資料請關注我們其它相關文章!