express
- express是啥
是个nodejs库,基于npm上中间件。类似koa - 特点
二次封装,非侵入式,增强型 - 安装
- npm init -y
 - npm install express -D
 - 安装中间件
npm i body-parser -D 
 - API
- 引入模块
let express = require(‘express’);
let bodyParser = require(‘body-parser’); - 搭建服务器
let server = express(); - 监听
server.listen(端口号) - 静态页面托管
server.use(express.static(‘静态页面文件地址’)); - 响应请求
server.get/post/use(地址,(req,res)=>{res.send(string|buffer)});注:res.send(字符串/buffer)相当于res.write(string|buffer);res.end();若地址为/,则地址可省略- req.query获取get请求
获取到的是object - 使用中间件获取post请求
let bodyParser = require(‘body-parser’);//引入中间件(中间件是个函数)
server.use(bodyParser()); //使用body-parser中间件 - req.method
判断是GET请求还是POST请求 - next是个函数,调用下一个相同地址的响应,除了/(如图 3-1)

 
 - req.query获取get请求
 
 - 引入模块
 
中间件
body-parser
- body-parser API
- 搭建服务器
let bodyParser = require(‘body-parser’); //引入body-parser中间件 - 获取post数据,限定大小,约定返回数据类xx.urlencoded({limit:xx}) //xx单位为kb
server.use(bodyParser.urlencoded({limit:5*1024}));//使用body-parser组件将表单限制大小为5M - 获取post数据
req.body 
 - 搭建服务器
 
multer
node.js原生文件操作方法
- 文件重命名
fs.rename('当前文件','改后的文件名',(err)=>{}); 引入path模块(处理文件与目录的路径)
path.parse('c:\\wamp\\xx.png');磁盘路径(str -> obj)12345678//path.parse之后得到的对象格式{root: 'c:\\', 盘符dir: 'c:\\wamp', 目录base: 'xx.png', 文件名ext: '.png', 扩展名name: 'xx' 文件,不含扩展名}path.join(‘磁盘路径1’,’磁盘路径2’)
参数1:__dirname魔术变量 返回当前文件所在的磁盘路径
- 文件重命名
 - 文件上传
- 前端
file enctype="multipart/form-data" - 后端
- 使用
body-parser中间件(不适合)
body-parser 接受 urlencode编码数据 ,数据回来的是字符,所以body-parse不适合文件上传,采用multer - 使用
multer中间件- let multer = require(‘multer’); 引入
 let objMulter = multer({ dest: './upload' });实例化 返回 multer对象(将文件保存到服务器下的upload文件夹中)
dest: 指定 保存位置(存到服务器)app.use(objMulter.any());any 允许上传任何文件- req.files获取到上传的文件数组(如图 2-1)
- fieldname: 表单name名
 - originalname: 上传的文件名
 - encoding: 编码方式
 - mimetype: 文件类型
 - buffer: 文件本身
 - size:尺寸
 - destination: 保存路径
 - filename: 保存后的文件名 不含后缀
 - path:    保存磁盘路径+保存后的文件名 不含后缀

 
 
 
 - 使用
 
 - 前端
 
cookie-parser cookie-session
- 如何识别同一个人访问了服务器(用户唯一性判断)
http协议,http无状态- 原理:通过给客户端浏览器保存一些信息(服务器给浏览器写cookie)
 - 需要中间件cookie-parser cookie-session
 - 流程
浏览器->服务器->给浏览器种cookie(服务器保留一份seesionID)->下次浏览器(带着cookie)->服务器(利用seesionID和cookie对比)->返回内容 - cookie-paser
let cookieParser = require(‘cookie-parser’);
server.use(cookieParser());- res.cookie(key,value,{配置}) 给浏览器种cookie
 - req.cookie.key 返回cookie(服务器读cookie)
 - res.clearCookie(key) 服务器给浏览器删cookie
 
 - cookie-session
let cookieSession = require(‘cookie-session);
server.use(cookieSession({
name:’key’,
keys:[‘aa’,’bb’], //用来加密,为了安全,必须存在
maxAge:1000*5 //过期时间}
));- 服务器写session
req.session.key = value; - 服务器读session
req.session.key - 服务器删session
req.session.key = undefined; 
 - 服务器写session