技术标签: 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();
文件存取的格式:r: 读取文件,若文件不存在则会报错w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾rb,wb:分别于r,w类似,但是用于读写二进制文件r+: 可读、可写,文件不存在也会报错,写操作时会覆盖w+: 可读,可写,文件不存在先创建,会覆盖a+: 可读、可写,文件不存在先创建,不会覆盖,追加在末尾import csv文件路径+文件名:file_path_csv ...
背景 Selenium定位元素过程中,发现很多下拉列表并不是select方法定义的下拉列表, 更多时候是<li> 标签的形式,导致定位很不方便,无法根据用例定义的参数对元素进行寻找思路:1、首先获取到列表下所有的枚举值并写入一个列表values = []values.append(driver.find_element_by_xpath('/div[1]/div[1]/ul').text)values = ['全部添加方式\n扫描二维码\n搜索手机\n名片分享']2、对列
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题目大意:n个人参加铁人二项,跑步和自行车,给定总长度,以及n个人的速度。然后第n个人贿赂了举办者,所以举办者会尽量调整两个项目的长度比例,然后第n个人获胜,问第n个人可以先第二名多久。解题思路:列出n-1个一元方程,对应成单峰函数,所以用三分求解即可。#include #include #include using n
SourceTree 功具列Commit 程式修改完畢,並Add完異動檔案後,commit 到 local repository。Checkout 從commit history中checkout特定的commit點的程式。Reset 將有異動的檔案回覆到之前的狀態(新增的檔案無法reset),可選擇單一檔案或全部有異動的檔案。Stash 隱藏所有的異動,並回覆到前一次的版本。stash之後,
正文下文中截图来源于朋友一个pdf版本的面经,把所以知识点的答案整理了下来,耗费他至少1个月时间,在本文最后部分把这个pdf分享给大家,觉得有用的麻烦点赞关注走一波,谢谢!!!面经中有他的知识点的答案,如下图示例,非常详细(文末有领取方式)!!!1.数据结构与算法篇你是java开发你就用java代码去实现书籍参考:(0)《图解算法》入门(1)《剑指offer》 剑指Offer_编程题_牛客网(2)《程序员代码面试指南 IT名企算法与数据结构题目最优解》参考左神视频(3)leetcode Lee
人大金仓数据库是不包含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
命运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
从书籍摘录,加上了自己的经验,仅用于学习,如有侵权请联系删除。
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=’struts.objectFactory.spring.enableAopSupport’]七月 11, 2016 3:49:24 下午 org.apache.tomcat.util.digester.SetP
忘记从哪篇文章获知,一个合格的程序员至少精通两门语言。时代在变化,即使java今天如此的热门,可能也有一天衰弱。人的差距取决于业余时间,所以就趁自己有时间的时候学了下python的基本语法。 刚好自己项目中要用到python建立数据源,自己也就试着自己独立写一个python数据源。开发环境实在ubuntu下,我本来想在Eclipse下安装个pydev插件用来开发python