electron+原生js 开发跨多平台Mac、Windows 和 Linux的electron store持久化数据存储(七)_Ace.一阶斗尊的博客-程序员秘密

技术标签: electron store  electron  

数据持久化的方法:1.存储在mysql等数据库中。2.存储在浏览器的localstorage中。3.存储在本地文件夹中。

electron store的git地址:https://www.npmjs.com/package/electron-store

安装electron store:

npm install electron-store

 1. electron store的实例化、设置数据、获取数据、删除数据......:

const Store = require('electron-store');//引入
const store = new Store(); //实例化,没有设置本地文件存储的名字默认是config.js。可以通过electron的app对象的app.getPath('userData')获取到本地存储的文件路径。
store.set('unicorn', '你好');//设置
let result=store.get('unicorn');//获取
store.set('foo.bar', true);
store.delete('unicorn');//删除

  2. 封装electron store的类:

const Store = require('electron-store');
const path =require('path');
class NewStore extends Store{
    constructor(settings){  //构造函数
        super(settings);    //继承Store,settings是配置变量 ,如存储的文件名
        this.arr=this.get('arr') || [];    //this.get()相当于 new Store().get();
    }
    saveArr(){ //设置
        this.set('arr',this.arr);
        return this;
    }
    getArr(){//获取
        return this.get('arr')
    }
    addArr(newArr){//添加
        const setVal=newArr.map((item)=>{
            return {
                id:new Date().getTime(),
                path:item,
                fileName:path.basename(item)
            }
        }).filter((item)=>{ //filter去重
            const pathArr=this.getArr().map((val)=>{val.path});
            return pathArr.indexOf(item.path)<0;            
        })
        this.arr=[...this.arr,...setVal];
        return this.saveArr();
    }
} 

module.exports=NewStore

  3. 使用封装electron store的类:

const NewStore=require('NewStore');

let myStore = new NewStore({
    'name':'myConfig'   //数据持久化存储的文件myConfig  即myConfig.json  
})

let val=myStore.addArr(newArr).getArr(); 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42231156/article/details/103173022

智能推荐

python的csv的字典格式读写_csv字典_离愁无语说的博客-程序员秘密

文件存取的格式:r: 读取文件,若文件不存在则会报错w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾rb,wb:分别于r,w类似,但是用于读写二进制文件r+: 可读、可写,文件不存在也会报错,写操作时会覆盖w+: 可读,可写,文件不存在先创建,会覆盖a+: 可读、可写,文件不存在先创建,不会覆盖,追加在末尾import csv文件路径+文件名:file_path_csv ...

Selenium-针对非select下拉列表定位的思路_客气__的博客-程序员秘密

背景 Selenium定位元素过程中,发现很多下拉列表并不是select方法定义的下拉列表, 更多时候是&lt;li&gt; 标签的形式,导致定位很不方便,无法根据用例定义的参数对元素进行寻找思路:1、首先获取到列表下所有的枚举值并写入一个列表values = []values.append(driver.find_element_by_xpath('/div[1]/div[1]/ul').text)values = ['全部添加方式\n扫描二维码\n搜索手机\n名片分享']2、对列

R语言读取CSV,删除重复行,进行数据分析_去掉csv 前两列r_奇丶迹的博客-程序员秘密

rm(list = ls())library(ggplot2)library(base)library(dplyr)Rstart=Sys.time()setwd("G:/GISworkspace/Rprocess")df=read.csv('level3_river_clipV6.csv',header = T)Cname=data.frame(df$NAME_CH)space=data.frame(1:lengths(Cname))num=array(1:lengths(Cn

uva 10385 - Duathlon(三分)_JeraKrs的博客-程序员秘密

题目链接:uva 10385 - Duathlon题目大意:n个人参加铁人二项,跑步和自行车,给定总长度,以及n个人的速度。然后第n个人贿赂了举办者,所以举办者会尽量调整两个项目的长度比例,然后第n个人获胜,问第n个人可以先第二名多久。解题思路:列出n-1个一元方程,对应成单峰函数,所以用三分求解即可。#include #include #include using n

SourceTree 学习总结(摘抄)_zhz459880251的博客-程序员秘密

SourceTree 功具列Commit 程式修改完畢,並Add完異動檔案後,commit 到 local repository。Checkout 從commit history中checkout特定的commit點的程式。Reset 將有異動的檔案回覆到之前的狀態(新增的檔案無法reset),可選擇單一檔案或全部有異動的檔案。Stash 隱藏所有的異動,並回覆到前一次的版本。stash之後,

Java面试超详细知识点!java项目管理证书_普通网友的博客-程序员秘密

正文下文中截图来源于朋友一个pdf版本的面经,把所以知识点的答案整理了下来,耗费他至少1个月时间,在本文最后部分把这个pdf分享给大家,觉得有用的麻烦点赞关注走一波,谢谢!!!面经中有他的知识点的答案,如下图示例,非常详细(文末有领取方式)!!!1.数据结构与算法篇你是java开发你就用java代码去实现书籍参考:(0)《图解算法》入门(1)《剑指offer》 剑指Offer_编程题_牛客网(2)《程序员代码面试指南 IT名企算法与数据结构题目最优解》参考左神视频(3)leetcode Lee

随便推点

人大金仓数据库不支持unix_timestamp函数_默默搬砖路的博客-程序员秘密

人大金仓数据库是不包含unix_timestamp这个函数的在数据库模式为orcale的情况下,执行下面代码,就能够支持函数了。CREATE OR REPLACE FUNCTION unix_timestamp(time_val timestamp with time zone) RETURNS integerAS DECLARE Unix integer;BEGIN select extract(epoch from time_val::timestamp at time zone 'P

HDOJ2571 DP入门题(DP+DFS)_老年退役选手的博客-程序员秘密

命运Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 20325 Accepted Submission(s): 7081Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yif

《TCP/IP详解 卷1:协议》学习笔记(未完待续)_tcpip详解卷一_chinalihuanyu的博客-程序员秘密

从书籍摘录,加上了自己的经验,仅用于学习,如有侵权请联系删除。

C++/C编程质量试题_zhy10的博客-程序员秘密

C++/C试题       本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。       笔试时间90分钟。请考生认真答题,切勿轻视。一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(

spring3+struts2+hibernate3整合出现的问题,No mapping found for dependency [type=java.lang.String, name='str_Allen Wu(WU, ZHWIEI)的博客-程序员秘密

spring3+struts2+hibernate3整合出现的问题,No mapping found for dependency [type=java.lang.String, name=’struts.objectFactory.spring.enableAopSupport’]七月 11, 2016 3:49:24 下午 org.apache.tomcat.util.digester.SetP

python数据源_python脚本数据源_no1066的博客-程序员秘密

  忘记从哪篇文章获知,一个合格的程序员至少精通两门语言。时代在变化,即使java今天如此的热门,可能也有一天衰弱。人的差距取决于业余时间,所以就趁自己有时间的时候学了下python的基本语法。       刚好自己项目中要用到python建立数据源,自己也就试着自己独立写一个python数据源。开发环境实在ubuntu下,我本来想在Eclipse下安装个pydev插件用来开发python

推荐文章

热门文章

相关标签