当前位置: 首页 > news >正文

UniApp 优化实践:使用常量统一管理本地存储 Key,提升可维护性

在 UniApp 项目开发中,随着功能的增加,本地存储(如 uni.setStorageSync)的使用频率也会增加。如果直接在代码中硬编码 key 值,不仅容易出错,也难以后期维护。

本文将以“自定义导航栏适配状态栏高度”为例,带你实现一个更优雅、更易维护的本地存储 key 管理方式 —— 使用常量统一管理 key 值,提升代码的可读性和可维护性。


一、问题:硬编码 key 值的弊端

在之前的代码中,我们是这样存储状态栏高度的:

uni.setStorageSync('GM_STATUS_BAR_HEIGHT', result.statusBarHeight)

这种方式虽然可以实现功能,但存在以下问题:

  • 拼写错误风险高:比如写成 'GM_STATUS_BAR_HEIGHTD',难以发现;
  • 不易维护:如果后续要修改 key 名,需要全局搜索替换;
  • 缺乏统一管理:多个 key 分散在不同文件中,维护成本高。

二、解决方案:使用常量集中管理 key

我们可以创建一个常量文件,集中管理所有本地存储的 key,例如:

✅ 创建常量文件:constant/index.uts

export const GM_STATUS_BAR_HEIGHT = 'GM_STATUS_BAR_HEIGHT'

推荐使用 constant 或 storageKeys 等命名方式作为目录名,统一管理所有本地存储的 key。


三、修改 App.vue:使用常量进行存储

在 App.vue 的 onLaunch 生命周期中,我们引入常量并使用它进行本地存储:

import { GM_STATUS_BAR_HEIGHT } from '@/constant/index.uts'export default {onLaunch() {uni.getSystemInfo({success: (result) => {uni.setStorageSync(GM_STATUS_BAR_HEIGHT, result.statusBarHeight)}})}
}

✅ 这样做的好处是:

  • key 值统一管理,避免重复或拼写错误;
  • 后期维护只需修改常量文件,无需逐个查找代码;
  • 提升代码可读性,其他开发者更容易理解。

四、页面中使用常量读取 key

在需要读取状态栏高度的页面中,同样引入常量并使用它读取本地存储:

import { GM_STATUS_BAR_HEIGHT } from '@/constant/index.uts'export default {data() {return {statusHeight: 0}},onLoad() {uni.getStorage({key: GM_STATUS_BAR_HEIGHT,success: (res) => {this.statusHeight = res.data}})}
}

这样,页面和 App.vue 使用的是同一个 key 常量,确保数据一致性。


五、进阶建议:扩展常量管理更多 key

随着项目功能的增加,你可能会用到更多本地存储的 key,例如:

export const GM_STATUS_BAR_HEIGHT = 'GM_STATUS_BAR_HEIGHT'
export const GM_USER_TOKEN = 'GM_USER_TOKEN'
export const GM_USER_INFO = 'GM_USER_INFO'
export const GM_APP_VERSION = 'GM_APP_VERSION'

这样你就可以在项目中统一使用这些常量,避免 key 的重复和混乱。


六、额外优化:封装本地存储工具类(可选)

为了进一步提升可维护性,你还可以封装一个本地存储工具类,统一处理读写逻辑:

✅ 示例:utils/storage.uts

import { GM_STATUS_BAR_HEIGHT } from '@/constant/index.uts'const get = (key: string): any => {const res = uni.getStorageSync(key)return res
}const set = (key: string, value: any): void => {uni.setStorageSync(key, value)
}export default {get,set,GM_STATUS_BAR_HEIGHT
}

然后在页面中使用:

import storage from '@/utils/storage.uts'export default {onLoad() {const height = storage.get(storage.GM_STATUS_BAR_HEIGHT)this.statusHeight = height}
}

这样,不仅 key 统一管理,读写逻辑也统一封装,后期维护更加轻松。


七、总结

通过本文的讲解,我们实现了:

  • 将本地存储的 key 值统一管理为常量;
  • 在 App.vue 和页面中统一使用常量,避免硬编码;
  • 提高了代码的可读性、可维护性和可扩展性;
  • 可选地封装了本地存储工具类,实现更优雅的代码结构。

在实际项目中,这种“常量集中管理 + 工具封装”的方式,能显著提升开发效率,降低维护成本。


📌 小贴士:

  • 常量命名建议使用大写加下划线格式(如 GM_STATUS_BAR_HEIGHT);
  • key 建议加上项目前缀(如 GM_),避免与第三方插件冲突;
  • 所有常量建议统一放在 constant 或 constants 目录中;
  • 可进一步结合 TypeScript 接口或枚举,增强类型安全。

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏或分享给需要的朋友!也欢迎关注我的技术博客,获取更多 UniApp 开发实战技巧。🚀

http://www.xdnf.cn/news/1151587.html

相关文章:

  • 7.19 换根dp | vpp |滑窗
  • 网络包从客户端发出到服务端接收的过程
  • 关于prometheus的一些简单的理解和总结
  • 1Panel中的OpenResty使用alias
  • 【Java源码阅读系列56】深度解读Java Constructor 类源码
  • SSH 密钥
  • C++ :vector的模拟
  • Oracle RU19.28补丁发布,一键升级稳
  • Python爬虫实战:研究psd-tools库相关技术
  • web前端渡一大师课 02 浏览器渲染原理
  • RESTful API设计与实现指南
  • 锂电池充电芯片
  • 从丢包到恢复:TCP重传机制的底层逻辑全解
  • 基于单片机智能插座设计/智能开关
  • MyBatis动态SQL实战:告别硬编码,拥抱智能SQL生成
  • 大模型军备竞赛升级!Grok 4 携 “多智能体内生化” 破局,重构 AI 算力与 Agent 2.0 时代
  • 如何快速学习一门新技术
  • 用户中心项目实战(springboot+vue快速开发管理系统)
  • 【黑马SpringCloud微服务开发与实战】(三)微服务01
  • LangGraph是一个基于图计算的大语言模型应用开发框架
  • 敏感词 v0.27.0 新特性之词库独立拆分
  • 数字图像处理(三:图像如果当作矩阵,那加减乘除处理了矩阵,那图像咋变):从LED冬奥会、奥运会及春晚等等大屏,到手机小屏,快来挖一挖里面都有什么
  • 《计算机网络》实验报告二 IP协议分析
  • leetcode3_435 and 605
  • 【Linux服务器】-zabbix通过proxy进行分级监控
  • 子线程不能直接 new Handler(),而主线程可以
  • sql练习二
  • 打靶日记之xss-labs
  • OpenCV 官翻 4 - 相机标定与三维重建
  • 如何设计一个软件项目管理系统:架构设计合集(六)