数据类型相关js有多少种数据类型
7种原始数据类型:null、undefined、boolean、number、string、symbol(es6新增)、bigint(es10新增)
1种引用类型:object
Symbol的特点和作用
每个 symbol 实例值都是唯一的
不能通过 new 构造var a = Symbol();
var b = Symbol();
a == b // false
var c = new Symbol() // Uncaught TypeError: Symbol is not a constructor
应用场景:
作为对象属性名Symbol 类型的属性时不可被枚举的,Object.keys()、for…in、Object.getOwnPropertyNames() 都不能枚举出 Symbol,利用该特性,我们可以把一些不需要对外操作和访问的属性使用 Symbol 来定义var obj = {
a: 1,
[Symbol()]: 'symbol'
}
Object.keys(obj); // [& ...
__dirname、__filename 到底是不是全局变量?node.js 官网给出的答案:不是!
模块作用域__dirname、__filename 其实是模块作用域
__dirname:是当前模块的目录名
__filename:是当前模块的文件名
exports:对module.exports 的引用
module:对当前模块的引用
require:用于导入模块、JSON 和本地文件
// test.js 位于 E:\projects\node\node-demo目录下,在当前目录执行 node test.js
console.log("__dirname", __dirname);
console.log("__filename", __filename);
console.log("exports", exports);
console.log("module", module);
console.log("require", require);
打印结果如下:
...
为了更好的理解 module.exports 和 exports 的关系,我们先来巩固下 js 的基础:
// test.js
var a = {name: 1};
var b = a;
console.log(a); // { name: 1 }
console.log(b); // { name: 1 }
b.name = 2;
console.log(a); // { name: 2 }
console.log(b); // { name: 2 }
var b = {name: 3};
console.log(a); // { name: 2 }
console.log(b); // { name: 3 }
a 是一个对象,b 是对 a 的引用,即 a 和 b 指向同一块内存,所以前两个输出一样。当对 b 作修改时,即 a 和 b 指向同一块内存地址的内容发生了改变,所以 a 也会体现出来,所以第三四 ...
Cookie认证机制
用户向服务器发送用户名和密码
服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等
服务器向用户返回一个session_id,写入用户的Cookie
用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器
服务器收到 session_id,找到前期保存的数据,由此得知用户的身份
Token认证机制我之前一直以为cookie和token是一样的,就是后台返回一个字符串保存在前端,之后的请求都带着这个字符串,后台去做校验,深入了解后知道两者是有很大区别的,是两种不同的机制。cookie认证需要后台存一份session_id到数据库,多服务器时需要session共享。而token认证则不需要后台保存,token一般放在HTTP请求头的Authorization中。
JWTJSON Web Token (JWT)是一种开放标准,使用数字签名安全传输信息。JWT常用场景:授权(Authorization)和信息交换(Information Exchange)。授权是最常用JWT的场景。JWT就是一个由‘.’ ...
1. 创建一个名为 <账户名>.github.io 的仓库
2. 新建 index.html 文件内容为:
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>my blog</title>
</head>
<body>
<h1>this is my blog</h1>
<h1>Hello ~</h1>
</body>
</html>
3. 访问主页
4. 搭建 hexo
安装 hexonpm install -g hexo-cli
hexo init <project-name>
cd <project-name>
npm install
本地启动hexo g & ...