首页 > 其他分享 >前端数据持久化——Vuex+LocalStorage

前端数据持久化——Vuex+LocalStorage

时间:2024-08-21 16:52:51浏览次数:14  
标签:存储 前端 用户 LocalStorage user localStorage Vuex

Vuex

VueX详解_组合式vuex-CSDN博客

 LocalStorage

LocalStorage是一种Web API,它允许网站在用户的本地浏览器中存储和检索数据,而不是将数据存储在服务器上。以下是LocalStorage的详细解析:

一、LocalStorage的基本特点

  1. 本地存储:LocalStorage存储的数据保存在用户的浏览器中,不会被发送到服务器。
  2. 持久化存储:LocalStorage存储的数据在浏览器关闭后仍然可以保留,直到用户手动删除或清空LocalStorage。
  3. 容量限制:LocalStorage的存储容量有限,通常为5MB左右,具体容量取决于浏览器版本和配置。
  4. 安全性:LocalStorage存储的数据只能被同一个域名的网页访问,其他域名的网页无法访问。
  5. 跨页面访问:LocalStorage存储的数据可以在同一个域名的所有页面中访问。

二、LocalStorage的优势

  1. 拓展了存储空间:相比于cookie的4K限制,LocalStorage提供了更大的存储空间。
  2. 节约带宽:LocalStorage可以将数据存储在本地,减少了对服务器的请求,从而节约了带宽。
  3. 提升用户体验:LocalStorage可以用于缓存数据、保存用户偏好等,从而提升用户体验。

三、LocalStorage的局限

  1. 浏览器兼容性:不同浏览器对LocalStorage的支持程度不同,且旧版本浏览器可能不支持LocalStorage。
  2. 数据类型限制:LocalStorage只能存储字符串类型的数据,对于复杂数据类型(如对象、数组等),需要转换为字符串后再进行存储。
  3. 隐私模式限制:在浏览器的隐私模式下,LocalStorage可能无法被读取。
  4. 安全性问题:LocalStorage的数据可以被同一域名的网页访问,存在数据泄露的风险。

四、LocalStorage的使用场景

  1. 缓存数据:LocalStorage可以用于缓存数据,如用户登录信息、搜索历史记录等,以提高网站的加载速度和用户体验。
  2. 保存用户偏好:LocalStorage可以用于保存用户的偏好设置,如语言选择、主题设置等,以提供个性化的用户体验。
  3. 表单数据的自动填充:LocalStorage可以存储用户填写的表单数据,以便用户下次访问时自动填充,提高填写表单的便利性。
  4. 会话管理:LocalStorage可以用于存储会话信息,如用户登录状态、认证令牌等,以实现跨页面的会话共享。

五、LocalStorage的使用示例

存储简单数据类型
// 存储数据  
localStorage.setItem('key', 'value');  
  
// 读取数据  
var value = localStorage.getItem('key');  
console.log(value); // 输出: value  
  
// 移除数据  
localStorage.removeItem('key');  
  
// 清除所有数据  
localStorage.clear();
存储复杂数据类型

由于LocalStorage只能存储字符串类型的数据,因此需要将复杂数据类型(如对象、数组等)转换为字符串后再进行存储。

// 存储复杂数据类型(对象)  
var obj = { name: 'John', age: 30 };  
localStorage.setItem('obj', JSON.stringify(obj));  
  
// 读取复杂数据类型  
var storedObj = JSON.parse(localStorage.getItem('obj'));  
console.log(storedObj.name); // 输出: John

六、LocalStorage的安全措施

  1. 使用HTTPS:通过HTTPS加密网页传输,防止数据被窃取。
  2. 数据加密:对LocalStorage存储的数据进行加密,即使数据被窃取,攻击者也无法解密。
  3. 限制数据存储量:减少LocalStorage存储的数据量,降低数据泄露的风险。
  4. 使用浏览器安全策略:如Content Security Policy(CSP),限制网页加载的资源,防止跨站脚本攻击(XSS)。

综上所述,LocalStorage是一种非常有用的Web API,但在使用时需要注意其限制和问题,以确保数据的隐私和安全。

Vuex+LocalSorage

需求:不同用户登录系统,系统的title不同,且保证登录系统后刷新浏览器数据不丢失

在Vue.js应用中,将Vuex数据存放至localStorage是一个常见的需求,特别是在需要持久化用户状态(如登录状态、用户偏好设置等)时。下面是如何实现这一功能的步骤:

1. 安装Vuex(如果尚未安装)

首先,确保你的项目中已经安装了Vuex。如果未安装,可以通过npm或yarn来安装:

npm install vuex --save  
# 或者  
yarn add vuex

2. 创建Vuex Store

接下来,在你的Vue项目中创建一个Vuex Store。这通常涉及到定义state、mutations、actions(可选)等。

// store.js  
import Vue from 'vue';  
import Vuex from 'vuex';  
  
Vue.use(Vuex);  
  
export default new Vuex.Store({  
  state: {  
    user: null, // 假设我们要存储的用户信息  
  },  
  mutations: {  
    setUser(state, user) {  
      state.user = user;  
      // 同时保存到localStorage  
      localStorage.setItem('user', JSON.stringify(user));  
    },  
    clearUser(state) {  
      state.user = null;  
      // 从localStorage中清除  
      localStorage.removeItem('user');  
    }  
  },  
  actions: {  
    // 可以在actions中调用mutations,特别是需要异步操作时  
    fetchUser({ commit }, userId) {  
      // 假设从API获取用户信息  
      // ...  
      // 假设我们获取到了用户信息 user  
      commit('setUser', user);  
    }  
  }  
});

注意:直接在mutations中操作localStorage可能不是最佳实践,因为这会导致你的Vuex逻辑与存储机制紧密耦合。更好的做法是使用插件或中间件,或者在actions中处理API调用和存储逻辑,然后在mutations中仅更新Vuex的state。

3. 在应用启动时从localStorage加载状态

在你的Vuex Store中,你可以添加一个插件或在创建store之前检查localStorage,以从localStorage加载状态。

// store.js  
import Vue from 'vue';  
import Vuex from 'vuex';  
  
Vue.use(Vuex);  
  
function loadState() {  
  try {  
    const serializedState = localStorage.getItem('user');  
    if (serializedState) {  
      return JSON.parse(serializedState);  
    }  
  } catch (e) {  
    // 处理解析错误  
    return null;  
  }  
}  
  
const storedState = loadState();  
  
export default new Vuex.Store({  
  state: {  
    user: storedState || null, // 使用从localStorage加载的状态(如果有的话)  
  },  
  // ... mutations, actions等  
});

4. 在组件中使用Vuex

现在,你的Vuex Store已经配置好了,可以从localStorage加载状态,并在状态更新时保存到localStorage。你可以像平常一样在Vue组件中使用这个Store。

<template>  
  <div>  
    <p v-if="user">Welcome, {{ user.name }}</p>  
    <p v-else>Please log in.</p>  
  </div>  
</template>  
  
<script>  
import { mapState } from 'vuex';  
  
export default {  
  computed: {  
    ...mapState(['user'])  
  }  
};  
</script>

标签:存储,前端,用户,LocalStorage,user,localStorage,Vuex
From: https://blog.csdn.net/m0_55049655/article/details/141394319

相关文章

  • 文心快码 Baidu Comate 前端工程师观点分享:智能代码助手需要什么(二)
    本系列视频来自百度工程效能部的前端研发经理杨经纬,她在由开源中国主办的“AI编程革新研发效能”OSC源创会·杭州站·105期线下沙龙活动上,从一款文心快码(BaiduComate)前端工程师的角度,分享了关于智能研发工具本身的研发历程和理念。以下视频是关于【智能代码助手需要什么】的......
  • 前端高频面试题整理
    1.在React中,如何检验props?为什么要验证props?在React中,你可以使用PropTypes库来检查组件的props。这可以确保组件收到的props类型正确,避免在应用运行过程中出现意外错误。具体的做法是导入PropTypes库,并为每个prop定义相应的类型和是否必需。首先,你需要安装prop......
  • VUEX基础入门Store使用详解
    【1】vuex是什么github站点:https://github.com/vuejs/vuex,在线文档:https://vuex.vuejs.org/zh-cn/Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。每一个Vuex应用的......
  • LocalStorage 的使用方法
    LocalStorage是一种web端的存储机制,它使得由JavaScript编写的网站或者应用可以无限期的在浏览器中存储并访问数据。什么是无限期呢?就是说存储在浏览器中的数据是会一直存在的,及时浏览器被关闭了也不会消失。LocalStorage的使用方法要在你的web应用中使用LocalStorage,只......
  • 前端学习笔记-JS篇-05
    对象什么是对象对象(object):JavaScript里的一种数据类型,可以理解为是一种无序的数据集合,注意数组是有序的数据集合,用来描述某个事物例如描述一个人:人有姓名、年龄、性别等信息、还有吃饭睡觉打代码等功能;如果用多个变量保存则比较散,用对象比较统一。比如描述班主任信息:静......
  • 前端开发中的大屏布局方案:使用 rem 单位与动态设置 html 的 font-size
    使用rem单位与动态设置html的font-size前言随着设备尺寸的多样化,网页需要能够在不同大小的屏幕上提供良好的用户体验。传统的布局方式(如使用px)在不同分辨率下可能会导致布局失真。为了解决这个问题,我们可以通过动态设置html元素的font-size并使用rem单位来构......
  • 前端使用 Konva 实现可视化设计器(21)- 绘制图形(椭圆)
    本章开始补充一些基础的图形绘制,比如绘制:直线、曲线、圆/椭形、矩形。这一章主要分享一下本示例是如何开始绘制一个图形的,并以绘制圆/椭形为实现目标。请大家动动小手,给我一个免费的Star吧~大家如果发现了Bug,欢迎来提Issue哟~github源码gitee源码示例地址接下来主要......
  • 前端如何处理xml配置文件?
    OpenSNN开思通智网,官网地址:https://w3.opensnn.com/2024年8月份“O站创作者招募计划”快来O站写文章,千元大奖等你来拿!“一起来O站,玩转AGI!”在前端处理XML配置文件时,可以使用JavaScript的内置功能来解析、操作和修改XML数据。处理XML的几个关键步骤1.加载XML文件......
  • 文心快码 Baidu Comate 前端工程师观点分享:以文心快码 Baidu Comate为例,智能代码助手
    本系列视频来自百度工程效能部的前端研发经理杨经纬,她在由开源中国主办的“AI编程革新研发效能”OSC源创会·杭州站·105期线下沙龙活动上,从一款文心快码(BaiduComate)前端工程师的角度,分享了关于智能研发工具本身的研发历程和理念。以下视频是关于【智能代码助手需要什么】的......
  • JSP基于Jsp的前端课程学习网站xa8bc(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:教师,课程名称,资料分类,前端课程,视频分类,课程视频,课堂作业,作业提交,作业批改,学生开题报告内容一、项目背景与意义随着互联网技术的普及和教育资......