> For the complete documentation index, see [llms.txt](https://jen-hsuan-hsieh.gitbook.io/javascript-node-js/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jen-hsuan-hsieh.gitbook.io/javascript-node-js/chapter2-nodejs/21what-is-nodejs.md).

# 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密集型操作

![](/files/-M4M0MnI2X57UXOi6tnT)

![](/files/-M4M0MnKuFkh6NVdM8ux)
