iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 2
0
自我挑戰組

通過Node.js了解後端運作原理!系列 第 2

Day2. 介紹Node.js特性

雖然說是要了解後端的運作原理,還是要先了解一下Node.js的一些特性,以利後面操作觀念才不會卡卡。

Asynchronous I/O (非同步輸入/輸出)

就像我們常用的Ajax呼叫,送資料給後端、去抓公開的open date...等,Node一樣有保留這特性。

$.ajax('url',{word:'哈囉你好!'},function(data){

   console.log('收到回應');

})
console.log('傳送文字');

ajax請求發出去之後,馬上輸出下面的「傳送文字」訊息,不必去等待請求結束收到回應,換句話說「你不用來呼叫我,我會自己再來呼叫你」。
由於不用等待I/O呼叫結束,能大大地提升程式的效率。(後面會實作到)

event (事件)&call back function (回呼函數)

沒錯,像JQuery常用的click事件是用來監聽滑鼠點擊,到了Node這邊可能是監聽伺服器的請求、資料傳送..等事件。
而回呼函數這邊機乎無所不在,由其在接受非同步呼叫返回資料的時候更是好用,像是ajax請求的success事件。

Single-threaded (單執行緒)

Node無法與其它的執行緒共用任何狀態,好處是不用像多執行緒那處處留意狀態的同步問題,不會有deadlock的情況發生。

缺點的部份有三

  • 無法利用多核CPU
  • 出錯誤會導致應用程式退出,需要不斷考驗其強健性
  • 大量的運算會佔用CPU,佔用時無法繼續呼叫非同步I/O

Node這部份使用一種概念child_process來處理,大致上是將運算分到各個子處理程序,以便分解大量的運算,最終再透過程序彼此之間的事件訊息傳送結果。

跨平台

帶給你各位滿滿的跨平台...不是!總之一切都要歸功於libuv,不然早期只能在Linux平台執行,要在其他平台使用很不方便。

P.S明天應該就會開始講node模組的部份(抖


上一篇
Day1. 參賽緣由&開發環境建置
下一篇
Day3. 模組機制
系列文
通過Node.js了解後端運作原理!30

1 則留言

0
fillano
iT邦超人 1 級 ‧ 2016-12-14 00:09:26

大量的運算會佔用CPI

應該是CPU?

Jackson iT邦新手 5 級 ‧ 2016-12-14 09:17:28 檢舉

謝謝fillano的提醒,已修正。

我要留言

立即登入留言