|
Lowdb 用法
```
import { Low } from 'lowdb'
import { JSONFile } from 'lowdb/node'
const adapter = new JSONFile('db.json')
const db = new Low(adapter, { settings: {} })
await db.read()
db.data.settings.theme = 'dark'
await db.write() // steno 自动原子写入
```
lowdb 使用 ESM 模块格式,import() 动态导入在 asar 内部会失败 steno lowdb 的依赖,提供原子写入功能,需要真实文件系统进行 fs.rename() 需要解压的依赖类型 ✅ ESM 模块:使用 import() 动态导入 ✅ Native 模块:包含 .node 二进制文件(如 better-sqlite3) ✅ 需要执行外部命令:如 puppeteer ✅ 需要写入文件:在模块目录内创建文件 ❌ 纯 JS 包:lodash、axios 等不需要解压 ASAR 是什么
ASAR(Atom Shell Archive)是 Electron 的归档格式:
类似于 tar/zip,将多个文件合并为一个
只读,无法直接写入
减少文件数量,加快启动速度
一定程度上保护代码
解压后的目录结构
resources/
├── app.asar # 主应用(不包含 lowdb/steno)
└── app.asar.unpacked/ # 解压的模块
└── node_modules/
├── lowdb/
└── steno/
|
Atom 指的是 Atom 编辑器,这是 GitHub 开发的一款开源文本编辑器。 历史背景 ┌─────────────────────────────────────────────────────────────────┐ │ ASAR 名称由来 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 2011年 │ │ ────── │ │ GitHub 开始开发 Atom 编辑器 │ │ 需要一个跨平台的桌面应用框架 │ │ 基于 Chromium + Node.js 创建了 Electron 的前身 │ │ │ │ 原名:Atom Shell │ │ ────────────────── │ │ 因为是为 Atom 编辑器开发的"壳"(Shell) │ │ 所以叫 Atom Shell │ │ │ │ 2015年 │ │ ────── │ │ Atom Shell 正式更名为 Electron │ │ 但 ASAR(Atom Shell Archive)的名称保留了下来 │ │ │ └─────────────────────────────────────────────────────────────────┘ 名称演变 名称 时间 说明 Atom Shell 2013-2015 Electron 的原始名称 Electron 2015-至今 正式更名,更通用 ASAR 至今 Atom Shell Archive,名称未变 总结 Atom = GitHub 的 Atom 文本编辑器 Shell = 应用程序的"壳"(框架) Archive = 归档文件 虽然项目已更名为 Electron,但 asar 这个名称作为历史遗留保留了下来,类似于: app.asar 文件扩展名 @electron/asar npm 包名 Electron 文档中的 asar 相关术语 |
|
|
|
|
|
|