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