### 一、什么是node.js
> Node是一个基于 Chrome V8 引擎的 JavaScript 运行环境
>
> Node使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效
>
> Node.js 的包管理器 npm,是全球最大的开源库生态系统
### 二、node.js能做哪些事
1. 处理文件与数据库
2. 与互联网进行沟通,以标准化的格式处理请求并发送回答(处理客户端请求)
3. 用来执行编译 CSS 预编译语言、预编译、压缩、混淆 JS、压缩图片、reload、deploy 等工程化任务
### 三、node.js的优点
1. 处理高并发场景性能更高
Java 1G 服务器 每个客户端连接耗费2M资源 1024=2^10
node 1G 服务器
2. 采用事件驱动、异步编程,为网络服务而设计
3. 轻量高效,运行速度是PHP的86倍
4. 包和模块
5. 便于前端学习
### 四、使用node.js
##### 安装
> node官网 https://nodejs.org
> node中文网 http://nodejs.cn
```javascript
node -v //查看版本,检测安装是否成功
```
##### 运行
```javascript
node index //文件名,后缀.js可写可不写
```
### 五、node.js模块
##### 核心模块
os、http、fs等
##### 自定义模块
exports、module.exports、require
##### 第三方模块
nodemon、cheerio等,需要在命令行中执行 `npm install 模块名称`
模块之间不能循环依赖
npm
> 是一个包管理工具
> 是仓库
> 是网站
##### nrm
npm install nrm -g
nrm ls
##### yarn
````javascript
yarn add package == npm install package --save
yarn add package -dev == npm install package --save-dev
yarn update package == npm updata package
yarn remove package == npm uninstall package
````
**用node服务器做一个中间层**
**前端 -> node服务器 -> JAVA服务器**
#####npm上传自己的模块包
1. 注册用户
2. 在本地新建一个项目
3. 使用 npm init -y初始化项目
4. npm adduser 输入用户名密码
5. npm publish