Electron 通用数据持久化 适合vue、react...

文章讲述了在Electron应用中遇到localStorage数据在重启后丢失的问题,通过引入electron-store插件实现用户数据的安全持久化存储,包括在Vue或React项目中保存登录信息,以及在主进程和渲染进程中管理数据的方法。

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

前言

理论上在 Electron 应用程序中,localStorage 是基于每个源(origin)存储的,这意味着它是与特定协议、主机名和端口绑定的。当 Electron 应用重启时,通常情况下 localStorage 中的数据应该会保持不变,不会自动清空。但是我偏偏遇到了这个问题。

  • 背景:由于特殊需求,访问我们的网站需要通过一个客户端来使用。所以,使用了electron的loadURL api 嵌入了链接。
  • 问题:登录后的token的用户数据会保存在localstorage中,在electron中,这份数据默认是持久化的,但是在个别window电脑中每次重启软件,都需要重新登录网页,导致了用户的投诉。
  • 原因:原因不详,升级Electron也没有解决。原因估计会有很多种,比如系统原因、权限原因等,但是无法去一一排查和兼容,所以想使用一劳永逸的方法,直接持久化数据。

解决方法: 持久化

Electron 内置的 electron-store 或者 electron-json-storage 插件,这些插件能够确保数据安全地存储在用户的应用数据目录下,即使应用重启或系统重启也能保持数据完整。

本文主要讲如何利用electron-store数据持久化保存用户的密码,自动登录。无论是用在vue项目或者react项目都是可以的。

它的使用场景可以有很多,保存登录信息只是其中一个使用场景。

具体步骤和代码

  1. 主线程暴露保存数据的方法
  2. 渲染端在登录的时候,把密码保传给Electron存起来,并标记时间
  3. 下载在登录界面时,从主线程获取密码,调用登录接口自动登录
  4. 如果用户主动退出登录,则清空数据

主进程


electron/main.js

const {
    app, BrowserWindow, ipcMain, Menu } = require('electron')
const path = require('path')
const Store = require('electron-store')
const Config = require('./config/env.js')

// 数据持久化
const store = new Store()

// 定义ipcRenderer监听事件
initIpcRenderer()

let mainWindow = null
function createWindow() {
   
  mainWindow = new BrowserWindow({
   
    width: 1920,
    height: 1200,
    webPreferences: {
   
      preload: path.join(__dirname, 'preload.js')
    }
  })

  mainWindow.loadURL(Config.url)
}

app.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非洲难民_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值