cookie和localStorage

本文介绍了一种前端存储管理方法,通过封装localStorage和cookie操作,实现数据的存取与删除功能。该方法支持字符串化对象以便存储,并提供了设置过期时间的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cookie和localStorage封装

export default {
  setStore(name, content) {
    let cont = content;
    if (!name) return;
    if (typeof cont !== 'string') {
      cont = JSON.stringify(cont);
    }
    window.localStorage.setItem(name, cont);
  },
  getStore(name) {
    if (!name) return null;
    return window.localStorage.getItem(name);
  },
  removeStore(name) {
    if (!name) return;
    window.localStorage.removeItem(name);
  },
  addCookie(name, value, days) {
    const expires = new Date();
    expires.setTime(expires.getTime() + (days * 3600000 * 24));
    const Myexpires = (typeof days) === 'string' ? '' : `;expires=${expires.toUTCString()}`;
    document.cookie = `${name}=${value}${Myexpires};path=/`;
  },
  getCookie(data) {
    let name = data;
    const allcookies = document.cookie;
    name += '=';
    const pos = allcookies.indexOf(name);
    if (pos !== -1) {
      const start = pos + name.length;
      let end = allcookies.indexOf(';', start);
      if (end === -1) end = allcookies.length;
      const value = allcookies.substring(start, end);
      return value;
    }
    return null;
  },
  deleteCookie(name) {
    const exp = new Date();
    exp.setTime(exp.getTime() - 36000);
    const cval = this.getCookie(name);
    if (cval !== null) {
      document.cookie = `${name}=${cval};expires=${exp.toGMTString()};path=/`;
    }
  },
};

### CookieLocalStorage的区别及适用场景 #### 容量差异 Cookie的最大存储容量为4KB,而LocalStorage的存储容量一般在5MB到10MB之间[^3]。这意味着对于需要较大存储空间的应用场景,LocalStorage更为适合。 #### 数据传输特性 Cookie会在每次HTTP请求中自动附加到头部并发送至服务器,增加了网络流量开销[^2]。相比之下,LocalStorage中的数据完全存储于客户端,不会随任何请求传递给服务器[^3]。因此,在频繁交互的场景下,使用LocalStorage能够减少不必要的带宽消耗。 #### 生命周期管理 Cookie支持设定具体的过期时间,一旦超过该时限则会被清除;如果未定义有效期,则默认当浏览器关闭时即消失(会话级)[^3]。然而,LocalStorage所保存的信息除非人为干预(如调用`clear()`函数),否则会长期存在[^4]。 #### 访问控制机制 两者均遵循同源政策约束下的安全性考量。不过值得注意的是,尽管都受限于此规则之下,但Cookie还具备路径(Path)/域(Domain)属性进一步细化其可触及范围,并且能被服务端读取响应头字段获取其中的内容[^1]; 而LocalStorage仅仅局限于同一源内的脚本操作无法直接暴露给后台程序处理. #### 使用目的区分 - **Cookie**: 主要应用于维持用户认证状态 (Session Management), 实现个性化推荐等功能所需的追踪行为记录等场合. - **LocalStorage**: 更倾向于满足前端应用程序内部逻辑所需的大规模静态资源缓存或是表单预填充之类的长期保留型需求. ```javascript // 设置获取 LocalStorage 示例 localStorage.setItem('username', 'JohnDoe'); const username = localStorage.getItem('username'); // 删除特定项或全部清空 localStorage.removeItem('username'); localStorage.clear(); ``` ```http Set-Cookie: sessionId=abc123; Expires=Tue, 19 Jan 2038 03:14:07 GMT; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值