[Node] 什麼是 NodeJS
基本概念
-
原本 JavaScript 只是寄生在瀏覽器上的語言,需要有瀏覽器的環境才能執行,此外,功能僅限於操作 DOM 元件等等。
-
NodeJS 讓我們可以在脫離瀏覽器的主機環境上使用 JavaScript 來處理工作,並且添加了更多主機上應該有的功能,使得它和其他語言類似,像是 PHP, Ruby, Python 等等,NodeJS 讓我們可以用前端學到的 JavaScript 來在伺服器上運行。
-
在瀏覽器端,可以透過 JS 來操作 DOM 元素。
-
在伺服器端時,則可以透過 NodeJS 來處理和客戶端提出的服務。
-
NodeJS 和 Chrome 瀏覽器都是使用由 Google 開發的 V8 引擎,這是一個開源的專案,目的是用來將 JavaScript 轉換成電腦能夠理解且快速執行的機器語言(machine code)。
-
Google 的 V8 引擎則是透過 C++ 寫成,因此開發者也可以透過撰寫 C++ 來為 NodeJS 添加更多的功能。
-
LTS 。
-
在瀏覽器的環境下,全域的環境變數是
window
,window
物件內包含了在瀏覽器中可以使用的各式各樣的方法,另外還有document
物件讓我們可以去修改瀏覽器上的畫面;在 NodeJS 的環境下,全域的環境變數是global
,裡面同樣包含了許多可以在 NodeJS 中使用的方法,另外也有process
這個物件可以看到 NodeJS 當前的許多資訊。> process.exit(0) # 離開 Node REPL without error
> .exit # 或按兩下 ctrl + c -
簡單來說,NodeJS 就是一個 JavaScript 的執行環境,並且透過 Google V8 引擎來將 JavaScript 轉換成機器語言,以便在機器上直接運行。而 V8 是透過 C++ 寫成,因此若 開發者想要進一步擴展 NodeJS 的功能,則可以透過撰寫 C++ 達到。
-
NodeJS 是一個單線程(執行緒)的語言(single thread),但透過 non-blocking 的 I/O 可以讓資料在讀取和寫入時可以去做其他的事情。其他程式語言在 blocking 的情況下,可能會建立多個執行緒來處理不同的任務。
-
NodeJS 使用的是 Error-First Callbacks
好處
- 學一套程式語言就可以開始打造完整的網路應用程式。
- 許多套件可以在前後端共用。
一個伺服器語言需要的功能
- 能夠重組織和複使用檔案片段
- 處理檔案,建立、刪除資料夾/檔案
- 處理資料庫
- 與網際網路溝通
- 能夠處理請求(request)和給予回應(response)
- 能夠長時間的處理工作任務