当前位置: 首页 > 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.dtcms.com/a/287474.html

相关文章:

  • 【无标题】重点阅读——如何在信息层面区分和表征卷曲维度,解析黑洞内部的维度区分机制
  • 基于 Google Earth Engine 的 DEM 鞍部自动提取
  • 基于Python的毕业设计选题管理系统设计与实现
  • 【CAN通信】AUTOSAR架构下TC3xx芯片是如何将一帧CAN报文发送出去的
  • NX二次开发常用函数坐标转化UF_MTX4_csys_to_csys和UF_MTX4_vec3_multipl
  • Linux基础命令(第二期)
  • 地图定位与导航
  • Go-Redis × RediSearch 全流程实践
  • Node.js:Stream、模块系统
  • KANO模型分类,以扫地机功能为例子
  • 实验-华为综合
  • 论文略读: RASA: RANK-SHARING LOW-RANK ADAPTATION
  • 《Linux系统配置实战:NTP时间同步与SSH免密登录全流程指南》​​
  • 【洛谷】询问学号、寄包柜、移动零、颜色分类(vector相关算法题p1)
  • LVS(Linux virual server)基础概念详解
  • 网络通信原理:分层协作与协议解析
  • Matplotlib 30分钟精通
  • 免费收听广播
  • C++类和对象(一)基础内容讲解
  • 使用uvx运行和安装Python应用程序
  • GEO营销:AI时代的搜索优化新赛道——从DeepSeek爆火看生成式引擎优化的崛起
  • 边界条件汇总
  • 初等数论Ⅱ
  • Spring监听器
  • (LeetCode 面试经典 150 题) 49. 字母异位词分组 (哈希表)
  • 开疆智能Profinet转ModbusTCP网关连接康耐视InSight相机案例
  • [故障诊断方向]SNNs:针对小样本轴承故障诊断的孪生神经网络模型
  • ICT测试原理之shorts(短路)测试原理
  • 【2025最新】 .NET FrameWork微软离线运行库合集,一键安装版
  • 【数据类型与变量】