# 2.1.What is Node.js?

* 話說從頭: 關於Javascript 與 MEAN Stack
  * Node.js 是一個javascript runtime built on Chromes V8 javascript engine
  *   在從前Javascript是只能在用戶端執行的腳本語言, 自從在Node出現後得以讓Javascript可以在伺服器端執行,

      開發者幾乎可以以Javascript一手包辦前端, 後端, 資料庫的開發.
  *   相較於傳統以LInux, Apache, MySQL, PHP所組成的"LAMP", 以Node.js為堆疊核心,&#x20;

      由MongoDB, Express, Angular, Node組成的生態系簡稱為"MEAN", 由於Node與其框架Express都有十分完整的生態系及貢獻者,&#x20;

      前端框架Angular的完整度更是不在話下, 因此MEAN成為近年來full stack開發上十分熱門的模式,&#x20;
* 那麼, Node究竟是什麼呢？
  *   Node的角色是個Web server, 像是Internet Information Services (IIS)及Apache,

      Javacript引擎為Google的V8, 開發者開發時使用的是Javascript, 再藉由V8解譯.&#x20;

      以下列出幾點主要明顯的特性:

      * 1\) 省下了編譯的過程, 修改完腳本重新執行即可
      * 2\) 單一執行緒, 事件驅動 (Event driven)
      * 3\) 不需依賴平台, 不像.NET或是JAVA
* Node的優缺點
  * 優點:
    * 1\)前後端開發語言一致
    * 2\)開放架構使生態系豐富
    * 3\)適合IO密集型操作
    * 4\)對於硬體的需求相對低
  * 缺點
    * 1\)年紀較輕
    * 2\)不適合CPU密集型操作

![](https://3195929128-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4M0G8GO2MkGtHfarAf%2F-M4M0IHoyFvfGKjf7P-T%2F-M4M0MnI2X57UXOi6tnT%2F%E6%9C%AA%E5%91%BD%E5%90%8D52.jpg?generation=1586302920956788\&alt=media)

![](https://3195929128-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4M0G8GO2MkGtHfarAf%2F-M4M0IHoyFvfGKjf7P-T%2F-M4M0MnKuFkh6NVdM8ux%2F%E6%9C%AA%E5%91%BD%E5%90%8D51.jpg?generation=1586302921093458\&alt=media)
