node.js簡單理解

Rayshaan發表於2020-12-11

2020.12.11 02:33

01.node.js究竟是什麼?

Node.js是一個Javascript執行環境(runtime)

02.Node.js與JavaScript的區別是什麼?

本質:

  • Javascript是一種web前端語言,主要用於web開發中,由瀏覽器解析執行

  • Node.js是一個可以快速構建網路服務及應用的平臺,是用Javascript語言構建的服務平臺,可用於後端建立伺服器

區別:

  • Javascript 主要應用前端 是程式語言 客戶端程式語言(需要瀏覽器的javascript直譯器進行解釋執行)

  • node.js 主要應用後端 1個平臺 執行環境(一個基於Chrome JavaScript執行時建立的平臺,它是對Google V8引擎進行了封裝的執行環境)

簡單的說node.js就是把瀏覽器的直譯器封裝起來作為伺服器執行平臺,用類似javascript的結構語法進行程式設計,在node.js上執行。

03.Node.js的優點?Node.js的缺點?

優點:

  • 1.事件驅動

  • 2.非同步程式設計

  • 3.非阻塞模式的IO

  • 4.輕量高效

缺點:

  • 1.可靠性低

  • 2.單程式,單執行緒,只支援單核cpu,不能充分的利用多核cpu伺服器。一旦這個程式崩掉,那麼整個web服務就崩掉了。

04.Node.js適用場景?Node.js不適用的場景?

適用場景:

  • 1.JSON APIL ——構建一個Rest/JSON API服務,node.js可以充分發揮其非堵塞IO模型以及javascript對JSON的功能支援

  • 2.單頁面、多Ajax請求應用——前端有大量的非同步請求,需要伺服器後端有極高的響應速度

  • 3.基於node.js開發Unix命令列工具——node.js可以大量產生子程式,並以流的方式輸出

  • 4.流式資料——傳統的web應用,通常會將HTTP 請求喝響應看成是原子事件。而node.js會充分利用流式資料這個特點,構建非常酷的應用

不適用場景:

  • cpu使用率較重、io使用率較輕的應用

05.node.js於java和區別

Node.js:

  • Node.js比Java更快 :node.js開發快,執行的效率也算比較高,但是如果專案大了就容易亂

  • Node.js本質上就是JavaScript,採用事件驅動,非同步程式設計,為網路服務而生。而且JavaScript的匿名函式和閉包特性非常適合事件驅動、非同步程式設計。Node.js的本質導致其特性就是開發快,執行效率高。

  • Node.js非阻塞模式的IO處理帶來了在相對較低的系統資源耗用下高效能和負載能力,非常適合用作依賴其他IO資源的中間層服務(非常重要,因為node一般作為頁面的輕server使用)。

  • Node.js輕量高效。在響應客戶端之前,預計可能有很高的流量,但所需的伺服器端邏輯不一定很多,可以說是資料密集型分散式部署環境的實時應用系統的完美解決方案。

  • 而Node.js的特性既是優點也是缺點,因為JavaScript不是靜態型別語言,Node.js其實是一種解釋語言,必然會導致在大專案中出現邏輯複雜,可維護性差等缺點。

  • javascript引擎基於事件的函式回撥模型既是優勢又是劣勢:
    導致複雜邏輯失控,不能用於生產環境

node.js與java比較:

  • node.js比Java更快 :node.js開發快,執行的效率也算比較高,但是如果專案大了就容易亂,java開發慢,但是如果專案大、複雜的話,用java就不容易亂,管理起來比node.js省
  • javascript不是靜態型別的語言,,要到執行時才知道型別錯誤,所以寫的多了之後免不了會出現光知道有錯但是找不到哪兒錯的情況,所以測試就得些的更好更詳細。
  • Node.js 前後端都採用Javascript,代表未來發展的趨勢,而java則是現在的最流行的伺服器端程式語言。
  • Node.js和Java EE——一種是解釋語言,一種是編譯語言

06.node.js於php的區別

  • 效能:
    在效能方面,Node.js 顯然贏了這一局。由於 Node.js 遵循事件驅動的非阻塞I/O模型,與傳統的後端技術相比,Node.js 能夠處理大量的伺服器請求。PHP 遵循一個阻塞模型,其中在伺服器端建立多個執行緒來處理多個客戶端請求,如果程式碼沒有被優化,它會導致高伺服器負載和響應時間。

  • 託管和部署:
    PHP 應用程式可以在包括 Nginx 和 Apache 以及 Windows 和 Linux 平臺在內的任何伺服器上執行,這使得部署過程變得更容易,而 Node.js,則需要具有 SSH 訪問許可權的虛擬伺服器。因此,在沒有任何控制檯命令和 Secure Shell(SSH)知識的情況下,用 PHP 部署小型企業和個人應用會更好。

  • 外部依賴:
    Node.js 依賴關係較少,用幾行程式碼就可以設定一個 Web 伺服器。但執行 PHP 應用程式,就需要外部伺服器軟體。用 Node.js 的開發人員只需要 NPM(節點包管理器)就可以下載 Node 模組,這些模組可以輕鬆地整合到應用程式中,提供額外的功能。

  • CPU 擴充套件任務:
    Node.js 可能在高吞吐量方面表現優異,但是當應用程式繁重,需要 CPU 做大量工作時,Node.js 肯定會有所欠缺。在這種情況下,PHP 最適合做 Web 應用程式的後端。

  • 單頁應用程式:
    如果您使用過 Gmail,那麼您可能知道什麼是單頁應用程式(Single Page Application)。Web 應用程式在初始客戶端請求時載入,之後根據客戶端請求重新整理的網頁的特定部分。Node.js 與 AngularJS 的聯合是開發單頁應用程式的完美方案。

  • 開發環境:
    Node.js 可以用於桌面應用程式開發(Windows,Linux和Mac),移動應用程式開發(混合和跨平臺應用程式),甚至構建基於控制檯的應用程式。雖然有一些也可以使用 PHP 來開發,但是大多數開發人員不會這樣做。

  • 社群支援:
    由於 PHP 比 Node.js 早誕生將近20年,所以在文件,API 和程式碼庫等線上資源方面更為豐富。所以很有可能其他人也嘗試了你想要用程式碼完成的事情並從中獲得了幫助。另一方面,Node.js 雖然已經得到了開發者和組織的廣泛關注,但是它支援開發者開發的資源缺相當少。

參考自:參考1 參考2 參考3

相關文章