Skip to content

ikStore

导入方式

import { ikStore } from 'iking-utils'

ikStore.cookie 继承了cookiejs的所有方法。

forage

localforage中文文档

ikStore.forage 继承了localforage的所有方法。

localStore

一个与浏览器的localStorage交互的实用程序对象。

has

检查给定的键是否存在于localStorage中

vue
<script setup>
const local = {
  has: (key: string) => {
    return Object.prototype.hasOwnProperty.call(localStorage, key)
  }
}
<script>

参数说明

参数值类型参数值说明
keyString要检查的键
vue
<script setup>
  import { ikStore } from  'iking-utils'
  console.log(ikStore.local.has('userInfo')); // Output: false
<script>

setItem

在localStorage中设置一个项

vue
<script setup>
  const local = {
    setItem: (name: string, value: any, time: number = 0) => {
      const nowTime = new Date().getTime();
      const overTime = paramType.isDate(time) ? nowTime + time * 1000 : 0;
      localStorage.setItem(name, JSON.stringify({
        value,
        overTime
      }))
    },
  }
<script>

参数说明

参数值类型默认值参数值说明
nameString-项目的名称
valueany-要存储的值
timenumber0可选。以秒为单位的过期时间。默认为0(永不过期)
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.local.setItem('userInfo', {name: '九牧', id: '32342'})
<script>

ik_store_local_setItem.png

getItem

从localStorage中检索一个项目。

如果它存在并且没有过期,返回存储值,否则为null。

vue
<script setup>
  const local = {
    getItem: (name: string) => {
      const paramStr = localStorage.getItem(name);
      // 不存在
      if (!paramStr) return null;

      const param = JSON.parse(paramStr);
      // 已过期
      if (new Date().getTime() > param.overTime && param.overTime !== 0) {
        localStorage.removeItem(name);
        return null
      }
      // 返回值
      return param.value;
    },
  }
<script>

参数说明

参数值类型默认值参数值说明
nameString-要检索的项目的名称
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.local.getItem('userInfo')
  // ikStore.local.getItem('userInfo') outPut: {name: '九牧', id: '32342'}
<script>

removeItem

从localStorage中移除一个项目。

vue
<script setup>
  const local = {
    removeItem: (name: string) => {
      name && localStorage.removeItem(name);
    },
  }
<script>

参数说明

参数值类型默认值参数值说明
nameString-要删除的项的名称
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.local.removeItem('userInfo')
<script>

clear

清除localStorage。

vue
<script setup>
  clear: (name: string) => {
    if (name)
      localStorage.removeItem(name);
    else
      localStorage.clear();
  },
<script>

参数说明

参数值类型参数值说明
nameString可选参数。 如果提供,则只删除具有指定名称的项,如未提供,所有项目将被移除
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.local.clear()
<script>

size

以千字节为单位计算localStorage占用的总大小。

返回以千字节为单位的总大小。

vue
<script setup>
  size: () => {
    // 获取所有localStorage键名
    const keys = Object.keys(localStorage)

    // 计算总大小(单位:字节)
    let totalSize = 0
    for (let i = 0; i < keys.length; i++) {
      const key = keys[i]
      const value = localStorage.getItem(key) || ''
      // 键名和键值都是字符串类型,每个字符占两个字节
      const size = (key.length + value.length) * 2 
      totalSize += size
    }
    // 将字节转换为KB并四舍五入
    const totalSizeInKB = Math.round(totalSize / 1024) 
    return totalSizeInKB
  }
<script>
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.local.size()
<script>

sessionStore

sessionStore对象提供了管理sessionStorage中的数据的方法。

has

检查sessionStorage是否有一个特定的键。如果键存在,则返回true,否则返回false。

vue
<script setup>
const session = {
  has: (key: string) => {
    return Object.prototype.hasOwnProperty.call(sessionStorage, key)
  }
}
<script>

参数说明

参数值类型参数值说明
keyString要检查的键
vue
<script setup>
  import { ikStore } from  'iking-utils'
  console.log(ikStore.session.has('userInfo')); // Output: false
<script>

setItem

设置sessionStorage中的一个项。它接受一个名称(键)和一个值作为参数。可选地,您可以提供一个时间参数来设置项的过期时间(以秒为单位)。如果没有提供时间,该项目将不会过期。

vue
<script setup>
  const session = {
    setItem: (name: string, value: any, time: number = 0) => {
      const nowTime = new Date().getTime();
      const overTime = time ? nowTime + time * 1000 : 0;
      sessionStorage.setItem(name, JSON.stringify({
        value,
        overTime
      }))
    },
  }
<script>

参数说明

参数值类型默认值参数值说明
nameString-项目的名称
valueany-要存储的值
timenumber0可选。以秒为单位的过期时间。默认为0(永不过期)
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.session.setItem('userInfo', {name: '九牧', id: '32342'})
<script>

getItem

从sessionStore中检索一个项目。

如果它存在并且没有过期,返回存储值,否则为null。

vue
<script setup>
  const session = {
    getItem: (name: string) => {
      const paramStr = sessionStorage.getItem(name);
      // 不存在
      if (!paramStr) return null;

      const param = JSON.parse(paramStr);
      // 已过期
      if (new Date().getTime() > param.overTime && param.overTime !== 0) {
        sessionStorage.removeItem(name);
        return null
      }
      // 返回值
      return param.value;
    },
  }
<script>

参数说明

参数值类型默认值参数值说明
nameString-要检索的项目的名称
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.session.getItem('userInfo')
  // ikStore.session.getItem('userInfo') outPut: {name: '九牧', id: '32342'}
<script>

removeItem

根据项的名称(key)从sessionStorage中删除项。如果name参数为空,则不执行任何操作。

vue
<script setup>
  const local = {
    removeItem: (name: string) => {
      name && sessionStorage.removeItem(name);
    },
  }
<script>

参数说明

参数值类型参数值说明
nameString要删除的项的名称
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.session.removeItem('userInfo')
<script>

clear

清空sessionStorage。如果提供了名称,则只删除具有该名称的项。如果没有提供名称,它将清除sessionStorage中的所有项。

vue
<script setup>
  clear: (name: string) => {
    if (name)
      sessionStorage.removeItem(name);
    else
      sessionStorage.clear();
  },
<script>

参数说明

参数值类型参数值说明
nameString可选参数。 如果提供,则只删除具有指定名称的项,如未提供,所有项目将被移除
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.session.clear()
<script>

size

以KB为单位计算sessionStorage的总大小。它遍历sessionStorage中的所有键,并计算每个键值对的大小。大小是通过将键和值的长度乘以2来计算的(因为每个字符占用2字节)。然后将总大小四舍五入到最接近的千字节并返回。

vue
<script setup>
  // 计算sessionStorage占用空间
  size: () => {
    // 获取所有sessionStorage键名
    const keys = Object.keys(sessionStorage)

    // 计算总大小(单位:字节)
    let totalSize = 0
    for (let i = 0; i < keys.length; i++) {
      const key = keys[i]
      const value = sessionStorage.getItem(key) || ''
      const size = (key.length + value.length) * 2 // 键名和键值都是字符串类型,每个字符占两个字节
      totalSize += size
    }
    const totalSizeInKB = Math.round(totalSize / 1024) // 将字节转换为KB并四舍五入
    return totalSizeInKB
  }
<script>
vue
<script setup>
  import { ikStore } from  'iking-utils'
  ikStore.session.size()
<script>