JavaScript 无内置持久化能力,浏览器用 localStorage(轻量键值)或 indexedDB(结构化数据),Node.js 依赖 fs 或 SQLite;均需注意容量、安全、清理与读写时机。
JavaScript 本身没有内置的“持久化存储”能力,所有数据默认随页面刷新或关闭而丢失;真正能落地的方案取决于运行环境——
浏览器
端靠
、
或
,Node.
js
环境则必须借助文件系统(
)或数据库(如 SQLite、PostgreSQL)。
浏览器里存简单配置:用
最直接,但别存敏感信息
是最常用的
前端
持久化方式,适合存用户偏好、开关状态、表单草稿等轻量 JSON 数据。它同步写入、容量约 5–10MB,但不加密、不防 XSS,且无法跨域共享。
写入字符串,值必须是字符串;对象得先
返回
而非
,记得判空
不能监听变化——除非自己封装一层,用
事件监听同源其他 tab 的修改
遇到
错误?说明超了配额,常见于存了大图片 base64 或未清理的旧数据
存结构化数据或大量内容:绕不开
当你要存用户上传的多个文件、离线消息列表、或需要索引查询的记录时,
就力不从心了。
是浏览器原生支持的异步、事务型 NoSQL 数据库,虽 API 繁琐,但无可替代。
必须在
中定义 object store 和 index,版本号升了才会触发,不是每次打开都重跑
所有读写操作都基于事务(
),且事务生命周期绑定在当前函数调用栈——别在
后续操作中继续用同一个事务对象
想存 ArrayBuffer、Blob、File?可以,但不能直接 JSON 序列化;
在较新浏览器可用,否则得手动处理
不要手写原生 indexedDB 封装,优先用
这类轻量 Promise 包装库,避免掉进事务失效、游标越界等坑
Node.js 环境下没
:老实用
或 SQLite
Node.js 没有 Web Storage API,所谓“前端式持久化”在这里完全不成立。临时存点配置,用
写 JSON 文件最直白;长期需查询、多进程访问,就得上 SQLite(用
或
)。
Comet AI 浏览器
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
下载
立即学习
“
Java免费学习笔记(深入)
”;
—— 注意
会丢掉函数、undefined、Symbol 和循环引用
并发写同一文件?可能丢数据。加锁要用
(POSIX)或第三方包如
SQLite 文件即数据库,无需服务端,适合 CLI 工具或桌面应用;但注意
是同步 API,别在主线程做复杂查询阻塞事件循环
别把
当持久化手段——它只在进程启动时读取,改了环境变量也不会自动更新
真正容易被忽略的不是“怎么存”,而是“什么时候删”和“谁有权读”。
不会自动过期,
不会自动压缩,Node.js 的 JSON 文件不会自动备份。持久化的麻烦,往往从第 3 次读写开始显现。
localStorageindexedDBcookiefslocalStoragelocalStoragelocalStorage.setItem('theme', 'dark')JSON.stringify()localStorage.getItem('theme')nullundefinedstorageQuotaExceededErrorindexedDBlocalStorageindexedDBonupgradeneededtransactionawaitstructuredClone()idblocalStoragefs.writeFilefs.writeFileSyncsqlite3better-sqlite3fs.writeFileSync('./config.json', JSON.stringify(config, null, 2))JSON.stringifyfs.flockproper-lockfilebetter-sqlite3process.envlocalStorageindexedDB