## 什么是nodejs
### nodejs的定義
引用nodejs中文網的定義:
>`Node.js `是一個基于 `Chrome V8` 引擎的 `JavaScript `運行環境。
`Node.js` 使用了一個事件驅動、非阻塞式 `I/O `的模型,使其輕量又高效。
`Node.js `的包管理器 `npm`,是全球最大的開源庫生態系統。
引用[七天學會NodeJS](https://nqdeng.github.io/7-days-nodejs/#1.1)對node.js的解釋
>`JS`是腳本語言,腳本語言都需要一個解析器才能運行。對于寫在`HTML`頁面里的`JS`,瀏覽器充當了解析器的角色。而對于需要獨立運行的`JS`,`NodeJS`就是一個解析器。
>每一種解析器都是一個運行環境,不但允許`JS`定義各種數據結構,進行各種計算,還允許`JS`使用運行環境提供的內置對象和方法做一些事情。例如運行在瀏覽器中的JS的用途是操作`DOM`,瀏覽器就提供了`document`之類的內置對象。而運行在`NodeJS`中的`JS`的用途是操作磁盤文件或搭建`HTTP`服務器,`NodeJS`就相應提供了`fs`、`http`等內置對象。
### nodejs有什么用
>盡管存在一聽說可以直接運行JS文件就覺得很酷的同學,但大多數同學在接觸新東西時首先關心的是有啥用處,以及能帶來啥價值。
>`NodeJS`的作者說,他創造`NodeJS`的目的是為了實現高性能`Web`服務器,他首先看重的是事件機制和異步IO模型的優越性,而不是`JS`。但是他需要選擇一種編程語言實現他的想法,這種編程語言不能自帶IO功能,并且需要能良好支持事件機制。JS沒有自帶IO功能,天生就用于處理瀏覽器中的`DOM`事件,并且擁有一大群程序員,因此就成為了天然的選擇。
>如他所愿,`NodeJS`在服務端活躍起來,出現了大批基于`NodeJS`的`Web`服務。而另一方面,`NodeJS`讓前端眾如獲神器,終于可以讓自己的能力覆蓋范圍跳出瀏覽器窗口,更大批的前端工具如雨后春筍。
>因此,對于前端而言,雖然不是人人都要拿`NodeJS`寫一個服務器程序,但簡單可至使用命令交互模式調試`JS`代碼片段,復雜可至編寫工具提升工作效率。
>`NodeJS`生態圈正欣欣向榮。