Nodejs 效能提示。
在許多情況下,例如處理 JSON 格式的 API 回應、處理網站上嵌入的 JavaScript 資源等時,我們會頻繁看到 13 位長數字,並且我們可能知道它是源自new Date().getTime()
等程式碼的紀元時間戳,但是,作為人類,我們無法快速分辨出它代表的日期和時間。有一個名為 Epoch Converter 的便捷網站,可以輕鬆地將其轉換為人類可讀的格式,但對於開發人員來說,大多數時候還有比打開網站更快捷的方法,即使用許多程式語言自帶的「互動式 shell」。
在處理大型文字檔案(例如解析日誌檔案)時,出於效率和效能原因,推薦逐行載入/迭代內容,而不是將所有內容讀入記憶體。在 Nodejs 中,這一直很麻煩,因為從日常用戶的角度來看,逐行閱讀的方式看起來很繁瑣且太底層。不過,得益於最近合併到版本 v18.11.0
的PR,情況不再如此,現在有了內建的 FileHandle.prototype.readLines
,使用起來非常方便。
在其他程式語言中,例如 Java、Ruby 和 Python,有 Thread.sleep()
、sleep
和 time.sleep()
方法來暫停當前執行緒的執行並等待指定時間後繼續執行,當與循環一起使用時,它可以幫助解決競爭條件問題。在 node.js 和一般的 JavaScript 中,由於單執行緒、事件驅動和非同步架構的性質,暫停和等待的方式可能看起來不是很明顯,也不常見。不過由於在特定情況下,使用 wait
和 retry
仍然是需要的且有幫助的,所以可以在 nodejs 或 JavaScript 中模擬類似的功能和效果。
在 Nodejs 中,當處理非文字檔案(例如圖像)的 IO 操作(例如透過網路傳輸或從磁碟讀取)時,有很大的機會以 stream.Readable
的形式接收內容,並且在我們能夠處理內存中的完整資料(例如計算位元組大小或圖像尺寸)之前,我們需要將 stream
保存到 `buffer 中,這裡有幾種方法。
繼 將 socket.io 從 v2 升級到 v3 之後,本文是關於將 socket.io
及其相關軟體包升級到撰寫本文時的最新版本,唯一的設定變更似乎是來自 redis-adapater
和使用針對我們的特定方式(導入客戶端)。
socket.io 及其相關函式庫,例如 socket.io-redis-adapter 和 socket.io-redis-emitter v2 到 v3 的遷移期間造成問題。這篇文章列出了遇到的問題以及如何根據實際經驗針對特定用例進行解決。
由於我發現自己現在越來越多地用 JavaScript 編寫程式碼,無論是後端還是前端開發,所以我認為我應該至少認真考慮一下它,這是十多年來的第一次,以下是我在深入研究這種長期被忽視的程式語言時發現的有用的資源。
如何使用nodejs快速產生隨機安全性令牌。
nodenv 是管理多個 NodeJS 版本的好工具,這裡總結了一些常用的命令,以供快速參考。