跳至主要内容

[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 。

  • 在瀏覽器的環境下,全域的環境變數是 windowwindow 物件內包含了在瀏覽器中可以使用的各式各樣的方法,另外還有 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)
  • 能夠長時間的處理工作任務

安裝 nvm

參考