js-cookie 是保存用户偏好的最稳妥方案,需设置 expires、path、secure 和 samesite 选项确保可靠存取;复杂偏好可 json 序列化存储,读取时用 || '{}' 防错;应于页面加载初期读取并应用,更新时直接 set 覆盖,恢复默认则 remove 并重置状态。

用 JavaScript 保存用户偏好(比如主题、语言、字体大小),关键不是“存进去”,而是“存得对、读得准、删得干净”。js-cookie 是最稳妥的选择,它自动处理编码、路径匹配和过期逻辑,避免原生 document.cookie 容易踩的坑。
偏好项怎么存才可靠?
用户选了深色模式,你不能只写 Cookies.set('theme', 'dark') 就完事。得明确告诉浏览器:这个值在哪条路径下有效、要不要 HTTPS 加密、能留多久。
-
设过期时间:偏好通常要长期保留,建议设 365 天或更久,比如
{ expires: 365 };不想永久保留,就别设,让它随会话结束自动清除 -
统一路径:加上
{ path: '/' },确保全站任何页面都能读到,而不是只在当前目录生效 -
安全传输:如果网站已启用 HTTPS,务必加
{ secure: true },防止 Cookie 被明文窃取 -
防 CSRF:加
{ sameSite: 'lax' }(默认值)或'strict',降低跨站请求伪造风险
存复杂数据(如多选项)怎么办?
偏好不总是一个字符串。比如用户同时设置了主题 + 语言 + 字体缩放,可以打包成对象存:
Cookies.set('user_prefs', JSON.stringify({ theme: 'dark', lang: 'zh-CN', zoom: 1.2 }), { expires: 365, path: '/' });
读取时再解析:const prefs = JSON.parse(Cookies.get('user_prefs') || '{}');。注意加 || '{}' 防止首次读取时返回 undefined 导致解析报错。
怎么让偏好一打开就生效?
页面加载初期就得读取并应用,不能等 DOM 渲染完才操作。推荐放在 <script></script> 标签里或 DOMContentLoaded 回调开头:
- 先读:
const prefs = JSON.parse(Cookies.get('user_prefs') || '{}'); - 再应用:比如
document.documentElement.setAttribute('data-theme', prefs.theme)控制 CSS 变量 - 最后同步 UI:勾选对应设置项、切换语言下拉框选中值等
用户改了偏好,怎么更新?
不需要手动删旧再写新 —— Cookies.set() 会自动覆盖同名 Cookie。直接重设即可:
Cookies.set('user_prefs', JSON.stringify(newPrefs), { expires: 365, path: '/' });
如果用户点了“恢复默认”,就用 Cookies.remove('user_prefs', { path: '/' }) 彻底清除,并重置页面状态。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











