微信小程序中的 storage(本地存储)和内存是两个完全不同的存储区域
这是一个非常关键且容易混淆的概念
既然 this.globalData.appId = appId 是将 appId 存储在内存中,为什么微信小程序中的 wx.getStorage 和 wx.setStorage(本地存储)中没有 appId,并且您提出了一个非常重要的疑问:storage 不就是内存吗?
关键区别:
您提出的疑问揭示了一个核心概念:微信小程序中的 storage(本地存储)和内存是两个完全不同的存储区域,它们之间有本质的区别。
-
内存(Memory):
- 临时存储: 内存是 临时性 的存储区域,用于存储程序运行时的数据。
- 快速访问: 内存的读写速度非常快,因此访问内存中的数据效率很高。
- 生命周期: 内存中的数据随着程序(这里指小程序)的启动而创建,随着程序的关闭而释放。
- 全局数据: 使用
this.globalData = {}方式定义的数据, 例如this.globalData.appId等, 都是存储在内存中的。 - 例子:
- JavaScript 变量 (如
const appId = ...) - 小程序实例的全局数据 (
this.globalData) - 函数调用栈
- JavaScript 变量 (如
-
本地存储(
wx.setStorage/wx.getStorage):- 持久化存储: 本地存储是 持久化 的存储区域,用于存储需要在小程序关闭后仍然保留的数据。
- 读写速度较慢: 本地存储的读写速度比内存慢,因为需要进行文件 I/O 操作。
- 容量限制: 本地存储通常有一定的容量限制,微信小程序也有限制, 请注意控制存储数据的大小。
- 生命周期: 本地存储中的数据会一直存在,直到被显式删除或小程序被卸载。
- 删除: 可以通过
wx.removeStorage来删除本地存储。 - 清空: 可以通过
wx.clearStorage来清空本地存储。
- 删除: 可以通过
- 例子:
- 用户登录状态
- 用户设置信息
- 缓存的 API 响应数据
storage 和内存的本质区别:
| 特性 | 内存 (Memory) | 本地存储 (Storage) |
|---|---|---|
| 类型 | 临时存储 | 持久化存储 |
| 读写速度 | 非常快 | 较慢 |
| 容量 | 有限,受设备限制 | 有限,受小程序限制 |
| 数据生命周期 | 随程序运行而存在,随程序关闭而释放 | 除非被删除或者小程序卸载,一直存在 |
为什么本地存储中没有 appId:
- 您没有显式地使用
wx.setStorageAPI 存储appId:- 您只是将
appId存储在了内存中,通过this.globalData.appId = appId赋值,并没有将appId使用wx.setStorageAPI 存储到本地存储中。
- 您只是将
- 本地存储中只保存了您明确调用
wx.setStorage存储的数据:- 微信小程序只会在您调用
wx.setStorage或wx.setStorageSyncAPI 时,才会将数据存储到本地存储。
- 微信小程序只会在您调用
总结:
- 内存和本地存储是完全不同的概念: 内存是临时的,本地存储是持久的。
- 您只是将
appId存储在了内存中: 使用this.globalData.appId = appId, 并没有存储到本地存储中。 - 本地存储需要显式调用
wx.setStorage: 您需要使用wx.setStorage或wx.setStorageSyncAPI,才能将数据存储到本地存储。
如何将 appId 存储到本地存储?
如果您希望将 appId 存储到本地存储,您需要在设置 this.globalData.appId 的同时,显式地调用 wx.setStorage 或 wx.setStorageSync:
// app.js
App({globalData: {appId: null},onLaunch: function() {// 获取当前小程序 appidconst appId = wx.getAccountInfoSync().miniProgram.appId;this.globalData.appId = appId;wx.setStorageSync('appId', appId)console.log('appId:', appId);},
});
在其他页面获取本地存储的 appId:
const appId = wx.getStorageSync('appId');
storage 和内存的区别,以及为什么本地存储中没有 appId.

相关文章:
微信小程序中的 storage(本地存储)和内存是两个完全不同的存储区域
这是一个非常关键且容易混淆的概念 既然 this.globalData.appId appId 是将 appId 存储在内存中,为什么微信小程序中的 wx.getStorage 和 wx.setStorage(本地存储)中没有 appId,并且您提出了一个非常重要的疑问:stor…...
WLAN基本原理与配置
一、WLAN概述 二、WLAN的基本概念 AC与Fit AP的组网架构: 1.二层组网 AC和Fit AP在一个广播域中 2.三层组网 AC和Fit AP需要跨三层通信 CAPWAP(无线接入点控制和配置协议): 该协议定义了如何对AP进行管理、业务配置&#…...
KaliLinux 2022.1安装和相关配置
一、安装系统和设置中文 (一)下载安装KaliLInux2022.1 以直接下载虚拟机映像文件为例,下载地址:https://www.kali.org/get-kali/#kali-virtual-machines,下载完成后直接解压,再用VMware打开后开机&#x…...
HarmonyOS开发:ArkTS初识
ArkTS基本语法 ArkTS语言简介 ArkTS是鸿蒙生态的应用开发语言。基本语法风格与TypeScript(简称TS)相似,在TS的生态基础上进一步扩展,继承了TS的所有特性,是TS的超集。 基本语法概述 扩展能力 基础语法:…...
Unity的四种数据持久化方式
目录 什么是数据持久化 数据持久化之PlayerPrefs 概述 API及用法 电脑中存放的位置 优缺点 主要用处 封装PlayerPrefs 数据持久化之XML XML是什么 读取XML信息 C#读取XML的方法有几种 读取xml文件信息 读取元素和属性信息 总结 写入XML信息 选择存储目录 存储…...
机器学习笔记 - 单幅图像深度估计的最新技术
1、深度估计简述 单眼深度估计是一项计算机视觉任务,AI 模型从单个图像中预测场景的深度信息。模型估计场景中对象从一个照相机视点的距离。单目深度估计已广泛用于自动驾驶、机器人等领域。深度估计被认为是最困难的计算机视觉任务之一,因为它要求模型理解对象及其深度信息之…...
Postman接口测试02|接口用例设计
目录 六、接口用例设计 1、接口测试的测试点(测试维度) 1️⃣功能测试 2️⃣性能测试 3️⃣安全测试 2、设计方法与思路 3、单接口测试用例 4、业务场景测试用例 1️⃣分析测试点 2️⃣添加员工 3️⃣查询员工、修改员工 4️⃣删除员工、查询…...
C#语言的学习路线
C#语言的学习路线 C#(读作“C Sharp”)是一种由微软开发的现代编程语言,具有强大的功能和灵活性,广泛应用于桌面应用程序、Web开发、游戏开发以及企业级应用等多个领域。无论你是编程新手还是有一定基础的开发者,掌握…...
双目的一些文章学习
文章1 PSMNet https://arxiv.org/pdf/1803.08669PSMNet文章博客PSMNet文章中牵涉到的一些知识,空洞卷积,SPPNet网络,计算视差时用soft argmin代替argmin文章中引入了空洞卷积和SPPNet网络来融合多尺度的信息,又引入3D卷积来增加模…...
开源模型应用落地-qwen2-7b-instruct-LoRA微调合并-ms-swift-单机单卡-V100(十三)
一、前言 本篇文章将使用ms-swift去合并微调后的模型权重,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 二、术语介绍 2.1. LoRA微调 LoRA (Low-Rank Adaptation) 用于微调大型语言模型 (LLM)。 是一种有效的自适应策略,…...
【C++面向对象——类与对象】CPU类(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 一、类的声明和使用 1. 类的声明基础 2. 类的访问控制 3. 类的使用 二、类的声明和对象的声明 1. 类声明中的函数定义 2. 对象声明的多种方式 三、构造函数和析构函数的执行过程 1. 构造函数 2. 析构函数 实验步骤 测试说明…...
性能测试05|JMeter:分布式、报告、并发数计算、性能监控
目录 一、JMeter分布式 1、应用场景 2、原理 3、分布式相关注意事项 4、分布式配置与运行 二、JMeter报告 1、聚合报告 2、HTML报告 三、并发用户数(线程数)计算 四、JMeter下载第三方插件 五、性能监控 1、Concurrency Thread Group 线程组…...
关于Java面试题大全网站无法访问的解决方案
如果Java面试题大全网站无法访问,你仍然可以通过以下渠道获取高质量的Java面试题资源: 1. 国内网站 牛客网: 网址:https://www.nowcoder.com/特点:提供大量Java面试题和在线编程练习,适合刷题和模拟面试。推…...
CSS进阶和SASS
目录 一、CSS进阶 1.1、CSS变量 1.2、CSS属性值的计算过程 1.3、做杯咖啡 1.4、下划线动画 1.5、CSS中的混合模式(Blending) 二、SASS 2.1、Sass的颜色函数 2.2、Sass的扩展(extend)和占位符(%)、混合(Mixin) 2.3、Sass的数学函数 2.4、Sass的模块化开发 2.5、Sass…...
SwiftUI 撸码常见错误 2 例漫谈
概述 在 SwiftUI 日常撸码过程中,头发尚且还算茂盛的小码农们经常会犯这样那样的错误。虽然犯这些错的原因都很简单,但有时想要快速准确的定位它们却并不容易。 况且这些错误还可能在模拟器和 Xcode 预览(Preview)表现的行为不甚…...
JavaScript系列(9)-- Set数据结构专题
JavaScript Set数据结构专题 🎲 在前八篇文章中,我们探讨了JavaScript的语言特性、ECMAScript标准、引擎工作原理、数值类型、字符串处理、Symbol类型、Object高级特性和Array高级操作。今天,让我们深入了解JavaScript中的Set数据结构。Set是…...
开发培训-慧集通(iPaaS)集成平台脚本开发Groovy基础培训视频
Groovy是一种基于Java虚拟机(JVM)的敏捷开发语言,结合了Python、Ruby和Smalltalk的许多强大特性。它旨在提高开发者的生产力,通过简洁、熟悉且易于学习的语法,Groovy能够与Java代码无缝集成,并提供强大…...
【软考网工笔记】计算机基础理论与安全——网络规划与设计
HFC 混合光纤同轴电缆网 HFC: Hybrid Fiber - Coaxial 的缩写,即混合光纤同轴电缆网。是一种经济实用的综合数字服务宽带网接入技术。 HFC 通常由光纤干线、同轴电缆支线和用户配线网络三部分组成,从有线电视台出来的节目信号先变成光信号在干线上传输…...
【设计模式】 基本原则、设计模式分类
设计模式 设计模式是软件工程中的一种通用术语,指的是针对特定问题的经过实践验证的解决方案。设计模式并不是最终的代码实现,而是描述了如何解决某一类问题的思路和方法。 如果熟悉了设计模式,当遇到类似的场景,我们可以快速地…...
mac m2 安装 docker
文章目录 安装1.下载安装包2.在downloads中打开3.在启动台打开打开终端验证 修改国内镜像地址小结 安装 1.下载安装包 到官网下载适配的安装包:https://www.docker.com/products/docker-desktop/ 2.在downloads中打开 拖过去 3.在启动台打开 选择推荐设置 …...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
