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 等等