認識 Node.js

Node.js 是什麼?

Node.js 不是一個程式語言,也不是一個框架,它是一個 JavaScript 的 runtime(運行時環境),並採用 Google 所開發的 V8 引擎執行程式碼,使用事件驅動、非阻塞和非同步輸入輸出等技術提高效能。

在 Node.js 出現以前,JavaScript 只能做為用戶端程式語言,並且只能在瀏覽器這個宿主中執行。Node.js 的出現使 JavaScript 也能夠脫離瀏覽器運行,可用於伺服器編程。另外 Node.js 含有一系列核心模組,使程式脫離 Apache HTTP Server 或 IIS,作為獨立伺服器執行。

Node.js 中的 JavaScript 與瀏覽器中的 JavaScript 差異

瀏覽器中的 JavaScript

Node.js 環境中的 JavaScript 不同於瀏覽器端所執行的 JavaScript,一般而言過去在前端領域我們所認識的 JavaScript 含有:

  • ECMAScript
    • 基本語法
    • if
    • var
    • function
    • 預設物件
      • Array
      • Object
      • Date
      • Math
  • BOM
  • DOM

Node.js 中的 JavaScript

然而在 Node.js 中,不同於瀏覽器端的 JS,它不含有 BOM 及 DOM,因為它執行在伺服器端,並不需要操做任何 HTML 的節點,它只含有 JS 的核心 也就是我們熟知的 ECMAScript。
另外 Node.js 提供一系列伺服器相關核心模組,提供開發者多樣化的 API,如 HTTP 服務能力及文件操作能力.. 等等

  • ECMAScript
  • 核心模組
    • 讀寫文件
    • HTTP 網路服務建置
    • 網路通信
  • 建置於 Chrome V8 引擎上,是目前公認最快的 JS 引擎
  • Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.
    • event-driven 事件驅動
    • non-blocking I/O model 非阻塞IO模型 (異步),類似於 AJAX,Node.js 提供大量非同步 API
    • 輕量及高效能
  • Node.js’ package ecosystem, npm is the largest ecosystem of open source libraries in th world
    • npm 是世界上最大的開源套件生態系統
    • 絕大多數 JavaScript 相關套件都存放在 npm 上,這樣做的目的是為了讓開發者更容易去下載使用

Node.js 可以做什麼?

  • 伺服器後台
  • command line 工具 (如:npm、git、hexo …)

對於前端工程師而言,接觸 node 最多的是它的 command line 工具,如 Webpack、gulp、npm 等等

資源