node的特点:
1:非阻塞的 i(input 输入)/o(output 输出) 模型
通过异步回调将阻塞操作变成非阻塞
一般的情况下 io操作都是堵塞的(网络请求(同步和异步)
文件操作 数据库操作。。。)
2:事件驱动
该特点决定了nodejs 适用于高并发
环境配置
安装
1:直接安装
2:通过nvm安装可以安装多个版本
nvm list 查看安装过的所有node 版本
nvm install 版本号
nvm uninstall + 版本号 删除
nvm use +版本号 切换 例如:nvm use 10.8.0
node 的特点
1.非阻塞的i(input)/o(output)模型
通过异步回调将阻塞操作变成非阻塞
一般情况下 io操作都是阻塞的(网络请求(同步和异步) 文件操作 数据库操作...)
2.事件驱动
该特点决定了nodejs 适合于处理高并发
#### 环境配置
安装
1. 直接安装
2. 通过nvm安装
```
nvm list 查看安装过的所有node版本
nvm install 版本号
nvm uninstall 版本号
nvm use 版本号
```
[nvm下载链接](https://github.com/coreybutler/nvm-windows/releases)
npm
```
初始化项目
npm init
npm init --yes
下载包
npm install jquery --save-dev 下载开发依赖 开发环境
npm install swiper --save 下载生产依赖 上线环境
npm install 包名字 默认生产依赖
npm install jquery@2.7.0 指定版本下载
删除包
npm uninstall 包名
查看镜像源
$符号是命令 正常些代码不需要加
$ npm config get registry http://registry.npmjs.org/
$ npm config set registry 淘宝镜像的连接地址 https://registry.npm.taobao.org
```
### 模块化
规范:AMD CMD COMMONJS(node)
#### 模块3步走(功能代码的抽离)
1. 创建一个模块,并抛出 module.exports=模块
2. 引入模块 require('路径')
3. 使用模块
#### 模块的分类
1、内置模块 node中自己携带的模块,直接使用
2、第三方模块 先下载模块在使用
3、自定义模块 开发者自己写的模块
#### 文件操作模块(curd,增删改查)
1.文件夹的操作
mkdir rmdir readdir rename
2.文件的操作
writeFile appendFile unlink readFile
3.fs.sate 产看状态
#### path
文件操作使用相对路径 文件找不到 相对路径是文件执行路径
path.join(__dirname,xxx)
#### 第三方模块发送邮箱
nodemailer
var a=2
Sync同步
/* 有两种方式 一种同步一种异步
创建文件夹 mkdir
删除 rmdir
修改 rename
读取 readdir
*/
// 引入模块
const fs = require('fs')
// 调用方法创建
// fs.mkdir('./hehe',(err)=>{
// console.log(err)
// })
// 方法二创建
// let res = fs.mkdirSync('./hehe')
// console.log(res)
// 删除 异步
// fs.rmdir('./hehe',(err)=>{
// if(err){
// console.log('删除失败')
// }else{
// console.log('删除成功')
// }
// })
// 删除 同步
// let res = fs.rmdirSync('./text')
// console.log(res)
// 修改
// fs.rename('./xx','./demo',(err)=>{
// console.log(err)
// })
// 读取
fs.readdir('./',(err,infos)=>{
// err 读取状态 infos 读取到的内容
console.log(err,infos)
})
创建文件 writeFile 覆盖写入
修改 appendFile
删除 rmFile
读取 readFile