头图

Electron 本地存储至关重要,能实现跨平台数据一致、离线访问、快速读写及保障数据安全。然而也有一些其自身的局限性。那么,有哪些本地数据存储方法呢?接下来我们将探讨几种常见的 Electron 本地数据存储方式,以更好地发挥其作用。

使用 appData 目录下的自定义文件

对于更广泛的兼容性或定制的存储需求,您可以在 Electron 的 appData 目录中创建和管理文件,可通过 app.getPath('userData') 访问该目录。这对于存储用户个性化数据、大型配置文件或其他资源等文件非常有用。

以下是示例代码:

const { app } = require('electron');
const fs = require('fs');
const path = require('path');

const userDataPath = app.getPath('userData');
const settingsFilePath = path.join(userDataPath, 'settings.json');

// Writing settings
fs.writeFileSync(settingsFilePath, JSON.stringify({ theme: 'dark' }));

// Reading settings
const settings = JSON.parse(fs.readFileSync(settingsFilePath));
console.log(settings.theme); // Outputs: 'dark'

正如示例代码看到的一样, 代码非常简单。

其特点主要有如下几点:

  • 灵活性高,能够依据具体需求随意地读写各类格式的文件。
  • 对熟悉 Node.js 的开发者而言,易于上手与理解。

然而,也存在一定局限性:

  • 需要手动管理文件路径和格式。
  • 对于大规模数据存储或许不够高效。

SQLite 本地数据库系统

SQLite 作为嵌入式数据库引擎在 Electron 应用中具有诸多优势。
它极为小巧,无需额外的服务器或运行时环境,仅需一个库文件。在性能方面,SQLite 表现得非常快速,原因在于它是一个本地库,能够直接读写磁盘文件。此外,虽然 SQLite 在结构化数据存储方面可能不如一些专门的数据库那么强大,但对于一些小型应用或对结构化数据存储要求不高的场景,SQLite 也能胜任。它可以存储结构化的数据,并且通过 SQL 语句进行查询和操作,为开发者提供了一定程度的结构化数据存储和管理能力。

better-sqlite3 号称是Node.js 中最快、最简单的 SQLite3 库。 本文将以此为例子讲解如何在Electron.js 中使用。

安装 better-sqlite3

npm install better-sqlite3

设置和使用数据库:

const Database = require('better-sqlite3');

const db = new Database(path.join(app.getPath('userData'), 'settings.db')); // 读取本地数据库文件

// 创建表
db.prepare('CREATE TABLE IF NOT EXISTS settings (key TEXT, value TEXT)').run();

// 插入数据
db.prepare('INSERT INTO settings (key, value) VALUES (?, ?)').run('theme', 'dark');

// 读取数据
const theme = db.prepare('SELECT value FROM settings WHERE key = ?').get('theme');
console.log(theme.value); // Outputs:

通过上面的代码,我们不难发现。 SQLite 具有如下优点:

  • 易于部署:无需进行复杂的安装和配置,只需要将数据库文件与应用程序一起分发即可。
  • 跨平台:支持多种操作系统,包括 Windows、Linux、macOS、Android 和 iOS 等。
  • 简单易用:SQLite 的 SQL 语法相对简单,容易学习和使用。对于小型项目或个人开发者来说,是一个非常方便的选择。

使用 Electron-store 第三方存储库

在开发过程中,有一个非常实用的第三方库叫做 electron-store。它可以封装本地存储 API,让主进程和渲染进程能够轻松共享数据。electron-store 库提供了一种简单的方式来存储和读取应用程序的配置数据,自动将数据保存到本地文件中,并在应用程序启动时加载数据。有了 electron-store,开发者无需担心数据的同步和一致性问题,能够更加方便地实现进程间的数据共享,极大地提高了开发效率。
以下是使用 electron-store 的示例代码:

安装 electron-store:

npm install electron-store

在主进程和渲染进程中使用:

const Store = require('electron-store');
const store = new Store();

// 存储数据
store.set('key', 'value');

// 读取数据
const value = store.get('key');
console.log(value);

通过使用第三方库,开发者可以更加方便地实现进程间的数据共享,提高开发效率。

总结

本地文件存储、SQLite 数据库以及 electron-store 乃是三种常见的数据存储方式。本地文件存储方式简单直接,然而管理起来相对较为复杂;SQLite 数据库功能强大,适用于复杂的数据结构;electron-store 则为 Electron 应用提供了便捷的存储方案。在进行存储方式的选择时,需依据应用场景与需求进行权衡,从而实现高效、可靠的数据管理,为应用的稳定运行提供有力支撑。


Sean
26 声望2 粉丝

一个 有趣的老程序员