美文网首页
浏览器存储方案

浏览器存储方案

作者: 未路过 | 来源:发表于2022-09-03 10:36 被阅读0次

1.认识Storage

image.png

2.localStorage和sessionStorage的区别

image.png

区别一:刷新页面的化,两个都在。关闭页面的化,sessionStorage没有,但是localStorage在。

区别二:一个标签是一个会话,所以页面内跳转,都是同一个标签,两个都在。
两个页面之间相互跳转传送数据,这个时候没必要使用localstorage去做永久存储,使用sessionStorage就可以了。_target是_self。

就是在test.html同一个文件夹写一个about文件,test里面写一个 <a href="./about.html"> about</a>。_target默认是_self,这个时候在test页面设置的session和local,在about页面都是能看到的。

区别三:打开新的页面,_target是_blank,local有,session没有。
一个tab是一个会话,新打开了一个标签tab,就是建立了不同的会话,sessionStorage不会保存。
就是在test.html同一个文件夹写一个about文件,test里面写一个 <a href="./about.html" _target="_blank"> about</a>。在新页面打开about文件,这个时候在test页面设置的session和local,在about页面只能看到local,不能看到session。

同一个ip地址,同一个端口号,就是同一个域。在同一个域里面,就能访问到local storage。
localStorage:在所有同源窗口都是共享的

3.Storage常见的方法和属性

image.png
// 1.setItem
localStorage.setItem("name", "coderwhy")
localStorage.setItem("age", 18)

// 2.length
console.log(localStorage.length)//2
for (let i = 0; i < localStorage.length; i++) {
  const key = localStorage.key(i)
  console.log(key)//age //name
  console.log(localStorage.getItem(key))//18 //coderwhy
}

// 3.key方法 
//该方法接受一个数值n作为参数,返回存储中的第n个key名称
console.log(localStorage.key(0))//age

// 4.getItem(key)
console.log(localStorage.getItem("age"))//18

// 5.removeItem
localStorage.removeItem("age")

// 6.clear方法
localStorage.clear()//该方法的作用是清空存储中的所有key;

4.封装Storage

class HYCache {
  constructor(isLocal = true) {
    this.storage = isLocal ? localStorage: sessionStorage
  }

  setItem(key, value) {
    if (value) {
      this.storage.setItem(key, JSON.stringify(value))
    }
  }

  getItem(key) {
    let value = this.storage.getItem(key)
    if (value) {
      value = JSON.parse(value)
      return value
    } 
  }

  removeItem(key) {
    this.storage.removeItem(key)
  }

  clear() {
    this.storage.clear()
  }

  key(index) {
    return this.storage.key(index)
  }

  length() {
    return this.storage.length
  }
}

const localCache = new HYCache()
const sessionCac he = new HYCache(false)

export {
  localCache,
  sessionCache
}

ts封装

class HYCache {
  storage: Storage
  constructor(isLocal = true) {
    this.storage = isLocal ? window.localStorage : window.sessionStorage
  }
  setItem(key: string, value: any) {
    this.storage.setItem(key, JSON.stringify(value))
  }
  getItem(key: string) {
    const value = this.storage.getItem(key)
    if (value) {
      return JSON.parse(value)
    }
  }
  dremoveItem(key: string) {
    this.storage.remove(key)
  }
  clearItem() {
    this.storage.clear()
  }
}

const localCache = new HYCache()
const sessionCache = new HYCache(false)

export { localCache, sessionCache }

感谢coderwhy老师的高级js课程,学习到了非常的的东西。

相关文章

  • js中的本地存储

    js中的本地存储:使用js向浏览器的某一位置存储一些内容,浏览器关闭也不会销毁。本地存储的方案: 传统方案: 1....

  • Javascript本地存储(一)

    Javascript本地存储(二) 各种存储方案 Cookies:浏览器均支持,容量为4KB UserData:仅...

  • 浏览器存储方案

    更多个人博客:(https://github.com/zenglinan/blog) 如果对你有帮助,欢迎star...

  • 浏览器存储方案

    1.认识Storage 2.localStorage和sessionStorage的区别 区别一:刷新页面的化,两...

  • HTML5 WEB Storage - localStorage

    localStorage作为客户端浏览器持久化存储方案 这个是浏览器隔离的,每个浏览器都会把localStorag...

  • localStorage

    ① 浏览器存储 大小5M 不和服务端通信 接口封装较好 浏览器本地缓存方案

  • Cookie与Session

    简介 cookie机制  在客户端保持状态的方案,浏览器通过扩展http协议自动发送给服务器:浏览器会检查所有存储...

  • Cookie 和 Storage API 区别与详解

    它们都是浏览器数据存储的方案,是用于解决数据持久化的问题。除此之外,数据也可以存储在内存中(比如挂载到 windo...

  • 【华为网络技术大赛】储存基础原理

    广义的存储 硬件存储系统 存储软件 存储网络 存储解决方案 存储方案 DAS(直接连接存储)早期 SAN(存储区域...

  • 本地储存(localStorage、sessionStorage

    一、各种存储方案的对比 Cookies:浏览器均支持,容量为4KBLocalStorage:HTML5,容量为5M...

网友评论

      本文标题:浏览器存储方案

      本文链接:https://www.haomeiwen.com/subject/ciysnrtx.html