首頁  >  文章  >  web前端  >  透過7個問題來簡單認識Node.js

透過7個問題來簡單認識Node.js

青灯夜游
青灯夜游轉載
2021-12-20 18:02:011637瀏覽

你了解Node.js嗎?如果不了解可以試試看。本文透過7個問題簡單認識Node.js,希望對大家有幫助!

透過7個問題來簡單認識Node.js

1. Node出生於哪一年?

Node誕生2009

#2009年3月,Node的作者在其部落格上宣布準備基於V8創建一個輕量級的Web伺服器並提供一套函式庫

同年5月,在GitHub發布最初的版本

2011年7月,在微軟的支援下發布了windows版本

2. 是誰創造出來的?

Ryan Dahl是Node的創造者,被稱為Node之父

但在2012年1月,Ryan Dahl將掌門人身分轉交給Isaac Z.Schlueter,由他接受Node的版本發佈及bug修復等工作,Isaac Z.Schlueter也是後來NPM的作者

3. 為什麼叫Node?

Node有許多別稱,像是Nodejs、NodeJS、Node.js等,那為什麼是Node呢?

起初,Ryan Dahl稱他的專案為web.js,就是一個web伺服器,但是專案的發展超出了他最初單純開發一個web伺服器的設想。變成了一個建立網路應用的基礎框架,可以在它的基礎上建立更多的東西,如伺服器、客戶端、命令列工具等等。 Node發展為一個強制不共享任何資源的單線程、單進程系統,包含是適宜網絡的庫,為構建大型分散式應用程式提供基礎設施,其目標也稱為一個構建快速、可伸縮的網絡應用服務。它本身非常簡單,透過通訊協定來組織許多Node,非常容易透過擴充來達成建構大型網路應用的目的。 每一個Node進程都構成了這個網路應用中的一個節點,這正是Node的意思

4. 為什麼是JavaScript成為了Node的實作語言?

選擇JavaScript作為Node的實作語言的主要原因有3個:

  • 高效能
  • 符合事件驅動
  • 沒有歷史包袱

Ryan Dahl曾經評估C、Lua、Haskell、Ruby等作為備選實現,但C開發門檻高,Lua有很多的歷史包袱,Haskell又覺得自己還玩不轉,而Ruby的虛擬機器的效能又不太好。綜合之下選擇了JavaScript作為Node的實作語言

你可能會跟我一樣想,JavaScript就沒有歷史包袱嗎?是的,JavaScript在後端一直沒有市場,歷史包袱相當於零

5. Node有哪些主要特點?

主要有以下特點:

  • 非同步I/O
  • 事件與回呼函數
  • 單線程

Node保留了前端瀏覽器JavaScript中的那些熟悉的接口,沒有改寫語言本身的任何特性

6. Node有哪些應用場景?

Node的應用程式場景主要有以下幾種:

  • CPU密集型
  • ##CPU密集型業務
  • 分散式應用程式
Node利用事件循環的處理能力,不需要為每一個請求啟動一個線程,從而更有效的組織起更多的硬體資源;對於偏重CPU棧操作的業務,Node的表現也是足夠高效的,主要原因是V8的深度性能優化

7. CPU密集型應用會為Node帶來什麼挑戰,如何解決?

CPU密集型應用程式會為Node帶來的主要挑戰是:由於JavaScript單線程,如果長時間計算(如大的循環),將會導致CPU時間片無法釋放,使得後續I/O無法啟動

通常方案:

    適當調整和分解大型運算任務
如果上述方案無法解決,Node還有兩種方法來充分利用CPU

    Node可以編寫C/C 擴展
  • #通過子進程的方式,將一部分Node進程當做常駐服務進程用於計算,然後利用進程間的訊息來傳遞結果,將計算與I/O分離
更多node相關知識,請造訪:

nodejs 教學! !

以上是透過7個問題來簡單認識Node.js的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除