介绍几个新API
- .substring()方法 xx.substring()括号中带的参数不一样,效果就会有很大的区别,详细如下:
xx.substring(0,2)表示取第一个和第二个字符(0,1,2表示第一、二、三个字符,含头不含尾的原则就只包含第一、二个字符),返回一个新的字符串(只包含指定的第一和第二个字符);
xx.substring(2)表示去掉前两个字符,返回一个新的字符串(只包含去掉前两个字符后剩下的字符串)
-
JSON.parse()方法将JSON格式字符串转换为js对象(属性名没有双引号)。
解析前要保证数据是标准的JSON格式,否则会解析出错。 -
node.js 的 Buffer.concat : 缓冲区合并
语法
Node 缓冲区合并的语法如下所示:
Buffer.concat(list[, totalLength])
参数
参数描述如下:
- list - 用于合并的 Buffer 对象数组列表。
- totalLength - 指定合并后Buffer对象的总长度。
返回值
返回一个多个成员合并的新 Buffer 对象。
实例
var buffer1 = Buffer.from(('菜鸟教程'));
var buffer2 = Buffer.from(('www.runoob.com'));
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 内容: " + buffer3.toString());
// buffer3 内容: 菜鸟教程www.runoob.com
- node.js操作json数据库
//读数据库
const usersString = fs.readFileSync("./db/users.json").toString(); //字符串
const usersArray = JSON.parse(usersString); //变成数组(对象)
console.log(usersArray);
//写数据库
const user3 = { id: 3, name: "tom", password: "yyy" };
usersArray.push(user3);
const string = JSON.stringify(usersArray); //变成字符串
fs.writeFileSync("./db/users.json", string);
-
fs.readFileSync 和 fs.readFile 区别: 同步读取的函数和异步函数相比,多了一个
Sync后缀,并且不接收回调函数,函数直接返回结果。 -
当读取二进制文件时,不传入文件编码时,回调函数的
data参数将返回一个Buffer对象。在Node.js中,Buffer对象就是一个包含零个或任意个字节的数组(注意和Array不同)。
Buffer对象可以和String作转换,例如,把一个Buffer对象转换成String:
// Buffer -> String
var text = data.toString('utf-8');
console.log(text);
或者把一个String转换成Buffer:
// String -> Buffer
var buf = Buffer.from(text, 'utf-8');
console.log(buf);
- Array.prototype.find()
find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
const array1 = [5, 12, 8, 130, 44];
const found = array1.find(element => element > 10);
console.log(found);
// expected output: 12
-
Set-Cookie
注意:正常人不会让`前端设置cookie -
session时效性:为保证安全性可将session注销,使得每次登陆都重新创建一个session和新的随机数对应用户信息
GET/POST请求
- AJAX默认为get请求,这样导致数据直接出现在url里;因此要改成post请求使它出现在下面
- GET可以用query拿到数据;POST 请求见上API及代码
比较绕的操作:
try {
userId = cookie // cookie是个数组
.split(";") // 分隔
.filter((s) => s.indexOf("user_id=") >= 0)[0] // filter找元素,indexOf返回索引
.split("=")[1];
} catch (error) {}
问题与想法
- Q : 既然cookie里的user_id可以被开发者工具修改那为啥还要用?
A : 用于反馈登录状态。安全性的解决办法:seesion,加密+JWT。这里我们将user信息存到session里