Smart-Admin本地存储设计:local-storage-key-const.ts的优雅实现
Smart-Admin本地存储设计:local-storage-key-const.ts的优雅实现
【免费下载链接】smart-admin项目地址: https://gitcode.com/gh_mirrors/smar/smart-admin
Smart-Admin作为一款基于SpringBoot + Vue3的快速开发平台,其本地存储设计体现了专业的前端架构思想。在local-storage-key-const.ts文件中,Smart-Admin团队展示了一套完整、规范的本地存储管理方案,为开发者提供了清晰的存储键名管理策略。🌟
为什么需要专门的本地存储常量文件?
在复杂的前端应用中,直接使用字符串作为localStorage的键名存在诸多问题:拼写错误难以发现、键名冲突、维护困难等。Smart-Admin通过local-storage-key-const.ts文件解决了这些问题,实现了:
- 统一管理:所有localStorage键名集中管理
- 避免冲突:使用前缀机制防止键名冲突
- 类型安全:TypeScript支持下的智能提示
- 易于维护:一处修改,全局生效
local-storage-key-const.ts的核心设计
1. 统一的前缀机制
Smart-Admin采用统一的前缀设计,确保键名的唯一性和可识别性:
const KEY_PREFIX = 'smart_admin_';这种设计避免了不同模块间的键名冲突,特别是在多标签页或微前端架构中尤为重要。
2. 完整的键名枚举
文件定义了7个核心存储键名,覆盖了用户会话、配置、界面状态等关键数据:
export default { // 用户token USER_TOKEN: `${KEY_PREFIX}user_token`, // 用户权限点 USER_POINTS: `${KEY_PREFIX}user_points`, // 用户的tag列表 USER_TAG_NAV: `${KEY_PREFIX}user_tag_nav`, // app config 配置信息 APP_CONFIG: `${KEY_PREFIX}app_config`, // 首页快捷入口 HOME_QUICK_ENTRY: `${KEY_PREFIX}home_quick_entry`, // 通知信息已读 NOTICE_READ: `${KEY_PREFIX}notice_read`, // 待办 TO_BE_DONE: `${KEY_PREFIX}to_be_done`, };3. 类型安全的导入方式
通过ES6模块化导出,确保类型安全:
import LocalStorageKeyConst from '/@/constants/local-storage-key-const';实际应用场景解析
场景一:用户认证管理
在axios.ts中,Smart-Admin使用USER_TOKEN键名管理用户认证:
const token = localRead(LocalStorageKeyConst.USER_TOKEN); if (token) { config.headers[TOKEN_HEADER] = 'Bearer ' + token; }这种设计确保了每次HTTP请求都能正确携带用户凭证,同时保持了代码的清晰性和可维护性。
场景二:应用配置持久化
在app-config.ts中,应用配置的加载和保存:
let appConfigStr = localRead(localStorageKeyConst.APP_CONFIG); if (appConfigStr) { try { state = JSON.parse(appConfigStr); } catch (e) { smartSentry.captureError(e); } }这种设计允许用户在刷新页面后仍能保持个性化设置,如主题、语言偏好等。
场景三:首页快捷入口定制
在home-quick-entry.vue中,快捷入口的本地存储:
function initQuickEntry() { let quickEntryJson = localRead(localKey.HOME_QUICK_ENTRY); if (!quickEntryJson) { quickEntry.value = _.cloneDeep(InitQuickEntryList); return; } quickEntry.value = JSON.parse(quickEntryJson); }用户自定义的快捷入口会被持久化存储,提供个性化的用户体验。
配套工具函数设计
Smart-Admin还提供了local-util.ts工具函数,简化本地存储操作:
export const localSave = (key, value) => { localStorage.setItem(key, value); }; export const localRead = (key) => { return localStorage.getItem(key) || ''; }; export const localClear = () => { localStorage.clear(); }; export const localRemove = (key) => { localStorage.removeItem(key); };移动端适配设计
在Smart-App(移动端版本)中,设计略有不同:
const KEY_PREFIX = 'smart_h5_'; export const USER_TOKEN = `${KEY_PREFIX}token`;移动端采用更简洁的键名设计,适应移动端存储空间的限制。
最佳实践总结
1. 键名命名规范
- 使用统一前缀避免冲突
- 采用大写蛇形命名法(SNAKE_CASE)
- 键名清晰表达存储内容
2. 数据序列化
- 复杂对象使用JSON序列化
- 简单值直接存储
- 注意数据类型转换
3. 错误处理
- 解析JSON时添加try-catch
- 使用默认值处理空数据
- 集成错误监控(如Sentry)
4. 存储限制管理
- 控制单个键的存储大小
- 定期清理过期数据
- 考虑存储空间限制
扩展建议
对于更复杂的应用场景,可以考虑以下扩展:
- 存储版本管理:添加版本号,支持数据迁移
- 自动过期机制:为敏感数据设置过期时间
- 加密存储:对敏感数据进行加密
- 存储监控:监控存储使用情况
结语
Smart-Admin的local-storage-key-const.ts设计体现了专业的前端工程化思想。通过统一的常量管理、清晰的分层设计和完善的工具函数,为开发者提供了优雅的本地存储解决方案。这种设计不仅提高了代码的可维护性,还为项目的长期演进奠定了坚实基础。
无论你是构建企业级后台管理系统还是移动端应用,Smart-Admin的本地存储设计都值得借鉴和学习。🚀
【免费下载链接】smart-admin项目地址: https://gitcode.com/gh_mirrors/smar/smart-admin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
