## 什么是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`生态圈正欣欣向荣。