news 2026/9/25 14:17:02

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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,可以让你轻松地进行本地数据持久化存储,最常见的是使用localStorage和sessionStorage,类似于在浏览器中的用法。这种方法适合于存储少量数据,例如配置信息或用户首选项。

    示例:

    // 本地存储数据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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 12:19:46

bashrc 配置

Bash 显示时间,自定义色彩。(参考 ANSI escape code)Windows Terminal Git Bash 避免乱码极简 git log # Bash 显示时间,自定义色彩。(参考 ANSI escape code) PS1\[\e[35;1m\]\D{%H:%M:%S}\[\e[0m\] \[\e[…

作者头像 李华
网站建设 2026/9/15 9:52:34

Vue3实现防抖、单页面引入、全局引入、全局挂载

MENU代码实现单页面引入全局引入使用代码实现 const debounce (fn: any, delay: number) > {let timer: any undefined;return (item: any) > {if (timer) clearTimeout(timer);timer setTimeout(() > fn(item), delay);} };export default debounce;单页面引入 …

作者头像 李华
网站建设 2026/9/15 10:30:01

vue+elementui实现英雄联盟道具城

目录 一、效果图 1.首页 2.商品列表、分类 二、实现重点讲解 1.首页轮播图 1.1技术实现: 1.2.鼠标聚焦切换图片事件 2.首页tab切换 3.商品列表实现 三、项目结构说明 四、总结 一、效果图 源码下载https://download.csdn.net/download/lucky_fang/92709315 项…

作者头像 李华
网站建设 2026/9/15 10:16:04

酷炫 css 按钮 边框霓虹

设计方式&#xff1a;通过伪元素、动画与层级展示 &#xff0c;另外旋转 伪元素内容的方式实现&#xff1b;<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content…

作者头像 李华
网站建设 2026/9/21 17:04:56

Web前端之textarea文本域标签元素、回车与换行符介绍、禁止事件冒泡、清除、清空、重置、赋值、stopPropagation、querySelector、innerHTML、replace、br

MENU前言换行符介绍JavaScriptHtml实时获取值清除值赋值replace前言 textarea标签本身不识别换行功能&#xff0c;回车换行用的是\n换行符&#xff0c;输入时有换行效果&#xff0c;但是渲染时就只是一个空格。这时就需要利用换行符\n或br标签的转换进行处理。 换行符介绍 表格…

作者头像 李华