Lowdb

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 相关术语

 


 


 


参考