node与jquery开发项目必备点

99 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

浏览器跳转地址拼接

const result = JSON.parse(err);

//{path: '/admin/user-edit', message: '对比失败', id: id}

 

let params = [];

for(let attr in result) {

if(attr != 'path') {

params.push(attr + '=' + result[attr]);

}

}

res.redirect(${result.path}?${params.join('&')});

 

密码加密 bcryptjs

哈希加密是单程加密方式 1234 =>abcd

在加密的密码中随机加入随机字符串可以增加密码被破解的难度

 

//导入bcrypt模块

const bcrypt = require('bcryptjs);

//生成随机字符串 generate生成salt盐

const salt = await bcrypt.genSalt(10);

//使用随机字符串对密码进行加密

const result = await bcrypt.hashSync('123467', salt);

//密码比对

let isEqual = await bcrypt.compare('123456', '加密的密码');

cookie 与 session

cookie:浏览器在电脑硬盘中开辟的一块空间,主要供服务器端存储数据

cookie 中的数据是以域名的形式进行区分的

cookie 中的数据是有过期时间的,超过时间数据会被浏览器自动删除

cookie 中的数据会随着请求被自动发送到服务器端

 

session 实际是一个对象,存储在服务器端的内存中,在 session 对象中也可以存储多条数据,每一条都有一个 sessionid 做为唯一标识

node中使用cookie与session

在node中需要借用express-session实现session功能

 

const session = require('express-session');

app.use(session({ secret: 'secret key' }));

//数据库中的user用户信息存储到session中

req.session.username = user.username

 

清除浏览器中存储的cookie

req.session.destroy(function(){

res.clearCookie('connect.sid');

res.redirect('/admin/login')

})

 

formidable

解析表单支持get请求参数,post请求参数,文件上传

//引入formidable模块

const formidable = require('formidable');

//创建表单解析对象

const form = new formidable.IncomingForm();

//设置文件上传的路径

form.uploadDir = "/my/dir"

//是否保留表单上传文件的扩展名

form.keepExtensions = false;

//对表单进行解析

form.parse(req, (err, fields, files) => {

//fields存储普通请求参数

//files存储上传的文件信息

})

文件读取FileReader

var reader = new FileReader();

reader.readAsDataURL('文件');

reader.onload = function () {

console.log(reader.result); }

Joi Javascript 对象的规则描述语言和验证器

enctype 指定 form 表单数据的编码类型

applcation/x-www-form/urlencoded

multipart/form-data 将表单数据编码二进制类型