当前位置: 首页 > news >正文

electron 开发轻量级本地数据存储桌面端应用(简洁版)

背景

接了一个项目需要开发一个功能简单的桌面端应用,主要包含的功能有 内置数据,本地化操作数据,对数据进行CRUD操作。
效果展示如下:

技术选型:

  1. 开发桌面端有如下几种技术方案:**

    Electron:使用HTML、CSS和JS构建跨平台的桌面应用程序,基于Chromium和Node.js。 NW.js:(也称node-webkit)类似于Electron。 React Native:使用React和JS。 Flutter:使用Dart编程语言,可构建高度定制的桌面应用程序。 本文这里选择Electron。
  2. “vue”: “^3.2.47”,
    “vue-router”: “^4.1.6”,
    “ant-design-vue”: “^4.0.0”,
    “lowdb”: “^1.0.0”, //本地化存储数据插件

项目搭建

本项目使用Vue Cli 创建Vue项目,命令如下:

npm i @vue/cli -g
vue create desk
cd desk
vue add electron-builder
npm run electron:serve

运行之后效果:

项目目录如下:
和vue项目目录差不多,差异的是electron主进程的代码是放在background.js中。

项目难点:

一.Electron 实现对数据进行本地持久化存储方案选择——lowdb

Electron 是一个用于构建跨平台桌面应用程序的开源框架,它允许你使用前端技术(HTML、CSS 和 JavaScript)创建桌面应用程序。如果你想在 Electron 应用程序中对数据进行本地持久化存储,你可以使用以下方法:

  1. 使用 Electron 的内置 API:Electron 提供了一些内置的 API,可以让你轻松地进行本地数据持久化存储,最常见的是使用localStoragesessionStorage,类似于在浏览器中的用法。这种方法适合于存储少量数据,例如配置信息或用户首选项。

    示例:

    // 本地存储数据localStorage.setItem('key','value');// 从本地获取数据constdata=localStorage.getItem('key');// 删除数据localStorage.removeItem('key');
  2. 使用 Node.js 模块:Electron 可以使用 Node.js 模块,这意味着你可以使用 Node.js 提供的文件系统和其他模块来进行更高级的本地数据持久化存储。最常见的方式是使用fs模块来读写文件。

    示例:

    constfs=require('fs');// 写入数据到本地文件fs.writeFile('data.txt','Hello, Electron!',(err)=>{if(err)throwerr;console.log('数据已写入文件');});// 从本地文件读取数据fs.readFile('data.txt','utf8',(err,data)=>{if(err)throwerr;console.log('从文件中读取的数据:',data);});
  3. 使用数据库:如果你需要存储大量结构化数据,你可以考虑使用一种数据库系统,如 SQLite、IndexedDB 或 LevelDB。SQLite 特别适合桌面应用程序,因为它是一个嵌入式数据库引擎,可以轻松地集成到 Electron 应用中。

    示例(使用 SQLite):

    constsqlite3=require('sqlite3').verbose();constdb=newsqlite3.Database('mydatabase.db');// 创建表并插入数据db.serialize(()=>{db.run('CREATE TABLE IF NOT EXISTS users (id INT, name TEXT)');db.run('INSERT INTO users VALUES (1, "John")');});// 查询数据db.all('SELECT * FROM users',(err,rows)=>{if(err)throwerr;console.log('查询结果:',rows
http://www.jsqmd.com/news/446899/

相关文章:

  • 【100%通过率】华为od统一考试B卷【流水线调度 / 自动化维修流水线】JavaScript 实现
  • Web前端之Css网格布居中的动画、VSC中Scss自动编译成Css、通过子元素改变父元素的样式值、安装和配置Sass插件、样式特殊单位、hover、child、grid、nth、fr
  • minio 安装部署、主从、卸载、基础使用
  • 数据库同步软件,PanguSync霸气!!!
  • AQS原理
  • 写文章,得有点儿原则
  • Web前端之UniApp低功耗蓝牙一键开门、数组匹配数组、多对多查找、开锁
  • Labelme安装以及qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was f问题解决
  • CAS原理
  • 微信小程序TS+SASS使用vant导致体验版白屏SystemError (jsEnginScriptError) X(...).bem is not a function
  • 【节点】[Fog节点]原理解析与实际应用
  • 酷炫 css 按钮 边框霓虹
  • 软件设计师考试中需要掌握的一些常用算法,基于C++实现
  • Mybatis的延迟加载
  • 教程 | 如何动用智慧安装NavicatPremium 16
  • Python 潮流周刊#141:Python 早期贡献者口述历史
  • Web前端之旋转木马的图片效果、鼠标进入停止动画、keyframes、hover、child、nth
  • canvas_3_绘制弧形
  • linux-centos常用指令、tar.gz解压、mv重命名、cp复制、ss -ltnp、curl测试任意端口网络是否可达等
  • 女生必看!用OpenClaw龙虾当你的24小时免费助理,职场、生活效率翻倍,做自己的女王!
  • 2026年宜昌两天一夜游路线权威榜单:十大精品路线深度评测与排位赛 - 品牌推荐
  • 软考知识总结
  • python pip 更新
  • MySQL为什么有了redolog还需要double write buffer?
  • 实习面经摘录回答(四)
  • CPU中央处理器(下)
  • 2026年留学生求职必看:中国留学生求职机构选型指南与适配场景全解析 - 品牌推荐
  • vue+elementui完美模拟pc版快手实现短视频,含短视频详情播放
  • TeXLive2023 pdflatex编译eps图像,出现错误的问题
  • 2026年用户口碑最佳的中国留学生求职机构推荐:五家真实服务体验与成果对比 - 品牌推荐