node.js的初步見解

來源:互聯網
上載者:User

標籤:

Node.js 是一個基於 Chrome JavaScript 運?時建立的平台, 用於方便地搭建響應速度快、易於擴充的?絡應?。Node.js 使用事件驅動, 非阻塞 I/O 模型而得以輕量和?效,?常適合在分布式裝置上啟動並執行資料密集型的即時應用。V8 引擎執行 Javascript 的速度非常快,效能非常好。Node 是一個 Javascript 運行環境(runtime)。 實際上它是對 Google V8 引擎進行了封裝。 Node 對一些特殊用例進行了最佳化, 提供了替代的 API,使得 V8 在非瀏覽器環境下運行得更好。

nodejs是一個基於Chrome V8 引擎的JS運行環境,也就是讓javascript運行在伺服器(server)端
NodeJS使用了一個事件驅動,非阻塞式的I/O模型,使得其輕量又高效。
Nodejs包管理器npm是全球最大的開源生態系統。

nodejs是服務端的js平台。

npm grunt express 等強大的代碼與專案管理應用在nodeJS上。

關於NodeJS與傳統伺服器處理平台(Apache)的區別 Apache的多線程高併發模式

Apache是一種多執行緒並發,但是在一些大型的web應用上也會發生阻塞。

線程和進程

線程是可以獨立啟動並執行最小的CPU單位。
線程可以在同一個進程中並發運行,並共用該進程下的記憶體位址空間。

進程可以支援多個線程,它們看似同時執行,但是相互之間並不同步。
一個進程中的多個線程共用相同的記憶體位址空間,意味著可以訪問相同的變數和對象,並且從同一堆中指派至。

這樣讓線程之間共用資訊變得容易,但是也要確保他們不會妨礙同一進程中想的其他線程。

NodeJS的非同步I/O原理

用資料庫的調用舉例:

Apache,執行到第一個線程的時候會等待query返回結果,一方面會導致線程長期阻塞等待,另一方面會為了新請求不斷增加線程,會浪費大量的資源,同時線程增加會佔用大量的CPU時間來處理記憶體環境切換。

NodeJS是非同步單線程的,應用的是非同步回調的方法,也就是非同步I/O
解釋:當進程執行的時候,不會等待結果的返回,而是直接執行下面的語句,直到進入事件迴圈,當資料庫執行返回結果的時候會將事件發送到事件隊列,等線程進入事件迴圈之後才會調用之前的回呼函數。
也就是nodejs的工作原理其實就是事件迴圈。每一條nodejs的邏輯都是寫在回呼函數裡面的,而回呼函數都是返回之後才非同步執行的。

NodeJS也會發生阻塞,但是阻塞發生在自己的單個線程當中,不是發生在後續回調的流程當中。

與php區別

用node來做網站開應用的是分塊載入的模式,不用像php那樣把所有的資料一次性載入到用戶端。

NodeJS相比於php和Apache開的新線程來講,節省了CPU記憶體和環境切換的時間。

NodeJS的應用情境

NodeJs適合應用在具有大量的細小的http請求環境下,例如web的即時聊天程式,或者上萬人同時線上的遊戲伺服器。不用考慮http請求次數過多的問題。

以上是我對node.js一些初步瞭解,希望這些可以讓更多的朋友瞭解node.js。

 

node.js的初步見解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.