博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vuex持久化方案探究
阅读量:4085 次
发布时间:2019-05-25

本文共 710 字,大约阅读时间需要 2 分钟。

背景

用vue开发中大型应用时候,我们通常都会使用vuex进行状态管理,但由于vuex是将数据以js对象的形势维护在内存中,所以当页面刷新时候,存在内存中的vuex数据将会丢失,在很多场景中,我们不愿意看到这样的结果的

引出的问题

那么如何实现vuex的持久化,使得他能变得像localStorage,sessionStorag一样呢?

自己造轮子

大体的思路无非就是将vuex的state存起来,初始化的时候去读取缓存并注册vuex,具体可看下面两种方案:

方案1:编写vuex插件

vuex提供了的功能,我们可以在每次mutation的时候将state保存下来,存到localStorage,sessionStorage中,然后页面初始化的时候,读取存储的state值,覆盖state的初始值

方案2:利用beforeunload事件

事件可能大家用的不是特别多,他并不是一个新特性,而是一个很老的事件,并且特别好(IE6都兼容了,你敢信)

 

 

 

beforeunload事件会在页面卸载之前执。如刷新,返回到其他页面,关闭等操作都会触发这个事件

这就给我们提供另外一种缓存思路,与其每次mutation时记录变化,为何不在页面unload时,一次性把要缓存的state都缓存起来呢,这样效率不是更高吗?

基于这个原理,我开发了一款插件

第三方解决方案

大多数第三方插件基于vuex插件实现。

社区也有一些不错的插件,如

作者:ggsxp
链接:https://juejin.im/post/5b71ad7ff265da283105dfe0
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的文章
将file文件内容转成字符串
查看>>
springcloud 的eureka服务注册demo
查看>>
eureka-client.properties文件配置
查看>>
MODULE_DEVICE_TABLE的理解
查看>>
platform_device与platform_driver
查看>>
platform_driver平台驱动注册和注销过程(下)
查看>>
.net强制退出主窗口的方法——Application.Exit()方法和Environment.Exit(0)方法
查看>>
c# 如何调用win8自带的屏幕键盘(非osk.exe)
查看>>
build/envsetup.sh 简介
查看>>
linux怎么切换到root里面?
查看>>
安装alien,DEB与RPM互换
查看>>
编译Android4.0源码时常见错误及解决办法
查看>>
Android 源码编译make的错误处理
查看>>
linux环境下C语言中sleep的问题
查看>>
ubuntu 12.04 安装 GMA3650驱动
查看>>
新版本的linux如何生成xorg.conf
查看>>
xorg.conf的编写
查看>>
启用SELinux时遇到的问题
查看>>
virbr0 虚拟网卡卸载方法
查看>>
No devices detected. Fatal server error: no screens found
查看>>