@Cookie

特点
.在浏览器端|客户端|C端保存一定大小的数据
.同级域名可以共享数据;同一网站中,所有页面共享一套cookie
.有一定的生存时间expires,过期则自动清除;默认是跟随浏览器的进程,即关闭浏览器,就清除cookie
.存储数据大小、数量有限制:4K
.不安全;敏感数据不要使用
.属于DOM范畴,是document的一个属性
.在 开发者视图F12→应用Application→Cookies中查看
语法
document.cookie
属性
类别 说明
name=value 存储的信息标识
expire 过期时间;默认随浏览器|会话Session结束而结束;通常按天计算
path 存储位置;默认是根目录/
priority 优先级/
设置
[]查看cookie的生存
1.设置默认生存时间的cookie:name
2.设置指定生存时间的cookie:id
3.打开开发者视图,查看cookie的保存情况
4.关闭浏览器
5.注释掉设置cookie的相关代码,重新打开浏览器,检测cookie的保存情况
document.cookie = 'name=cnplaman';
let d = new Date();
d.setDate(d.getDate() + 10);
document.cookie = 'id=5481;expires=' + d;
[]设置Cookie函数封装
.封装一个设置值对、过期时间[默认2天]的函数
.如何做数据有效性检测?
let setCookie = function (name, value, day = 2) {
  let d = new Date();
  d.setDate(d.getDate() + day);
  document.cookie = `${name}=${value};expires=${d}`;
}
获取
.同设置Cookie,只是不需要赋值
.结果是以分号+空格来分隔值对的字符串
.字符串的拆分:使用split()多次拆分,获取子串
[]获取Cookie函数封装
.return不能终止forEach,只能使用传统的for
let getCookie = function (name) {
  let arr = document.cookie.split('; ');
  for (let i = 0; i < arr.length; i++) {
    let tmp = arr[i].split('=');
    if (name == tmp[0]) {
      return tmp[1];
    }
  }
  return '';
}
清除
.设置一个同名Cookie:过期时间提前、值任意,由系统判断并删除
.
setCookie(name, '', -1);
[]清除Cookie函数封装
let clearCookie = function (name) {
  setCookie(name, '', -1);
}
应用
[]记住用户
clear info
let form = document.querySelector('#rem');
let uname = form.querySelector('#uname');
let cb = form.querySelector('#cb');
let clearBtn = form.querySelector('#clear-btn');

let setCookie = function (name, value, day = 2) {
  let d = new Date();
  d.setDate(d.getDate() + day);
  document.cookie = `${name}=${value};expires=${d}`;
}
let getCookie = function (name) {
  let arr = document.cookie.split('; ');
  for (let i = 0; i < arr.length; i++) {
    let tmp = arr[i].split('=');
    if (name == tmp[0]) {
      return tmp[1];
    }
  }
  return '';
}
let clearCookie = function (name) {
  setCookie(name, '', -1);
}

//
if (getCookie('name')) {
  uname.value = getCookie('name');
  cb.checked = true;
}

form.addEventListener('submit', (e) => {
  if (cb.checked) {
    setCookie('name', uname.value);
  }
})
clearBtn.addEventListener('click', () => {
  clearCookie('name');
  uname.value = '';//
  cb.checked = false;//
})
[]换肤
[]存档
总结 Summary
1.Cookie的特点
2.Cookie的设置、获取和清除
3.Cookie的常见应用
练习 Homework
1. 完成以上操作,体会Cookie的特点和基本使用
2. 将封装好的函数存放到单独的js文件中,方便共享使用
3. 利用Cookie,完善和优化个人网站