小程序无需安装,用户第一次使用小程序时,支付宝客户端会从服务器下载小程序的资源,下载后的小程序资源会缓存在支付宝的客户端一段时间。当用户再次打开已经缓存资源的小程序时,会跳过下载过程,能够更快地打开小程序。
- 冷启动:当用户打开未启动过,或者是已经销毁的小程序时,称为冷启动。此时小程序会执行初始化,初始化完成后,会触发
onlaunch
回调函数。
- 热启动:当用户打开已经关闭但仍处于后台运行的小程序时,称为热启动。在这种情况下,小程序并不会被销毁后重启,而仅是从后台切换到前台,此时,
onshow
函数会触发,onlaunch
回调函数不会被触发。
- 前台运行: 当用户首次打开小程序时候,小程序会处于前台运行状态。
- 后台运行: 用户点击右上角关闭按钮关闭小程序,或者按下设备 home 键离开支付宝客户端时,小程序并不会直接销毁,而是进入后台运行状态。
- 从后台运行切换为前台运行: 当未被系统销毁的小程序再度被打开或者激活时,会从后台运行切换为前台运行。
可在 app.js 中注册前台 / 后台切换的回调函数。当小程序从后台进入前台显示时会触发 onshow
,当小程序从前台到后台时会触发 onhide
。
开启本地缓存数据,进行存储、获取和删除等控制。 单个小程序的缓存总上限为 10 mb。 同步方法会阻塞当前任务,直到同步方法处理返回。异步方法不会阻塞当前任务。
操作同步异步描述存储数据存储在本地缓存中指定的 key 中的接口,会覆盖掉原来该 key 对应的数据。读取获取缓存数据的接口。清除清除本地数据缓存的接口。删除删除缓存数据的接口。获取相关信息获取当前 storage 的相关信息的接口。"}" id="89fb7e35">
操作 | 同步 | 异步 | 描述 |
存储 | my.setstoragesync | my.setstorage | 数据存储在本地缓存中指定的 key 中的接口,会覆盖掉原来该 key 对应的数据。 |
读取 | my.getstoragesync | my.getstorage | 获取缓存数据的接口。 |
清除 | my.clearstoragesync | my.clearstorage | 清除本地数据缓存的接口。 |
删除 | my.removestoragesync | my.removestorage | 删除缓存数据的接口。 |
获取相关信息 | my.getstorageinfosync | my.getstorageinfo | 获取当前 storage 的相关信息的接口。 |
用户点击右上角关闭按钮关闭小程序时,小程序仅是进入后台运行,不会被销毁。只有当小程序进入后台运行状态一定时间,或者占用系统资源过高时,才会被真正销毁。
q:小程序如何使用 cookie?
a:小程序中不建议使用 cookie,小程序针对服务端回设的 cookie 不会禁用掉,会设置到小程序进程中,下次小程序进行请求,会自动将已有的 cookie 带入到服务端请求中。前端获取不到 cookie,也不会对 cookie 做任何操作。小程序建议使用 缓存。
q:使用了缓存 api 后,小程序的缓存什么时候会被清掉?
a:使用了缓存 api 必须使用清除 api,否则缓存不会被清除掉。
q:小程序启动报错 error: eacces: permission denied, mkdir /users/xiaoqiang/tuhu/gitlab/ali_ app/ali_app/dist/.tea
a:权限问题,用超级用户来执行。在 npm install 指令前加 sudo 变为: sudo npm install。
q:打开小程序报错“系统异常,暂时无法启动,请稍后再试”
a:支付宝客户端版本过低,不支持某些 api 或者组件,会报这样的错误。建议做 兼容 处理。
q:小程序中存入的缓存数据为什么多了一对双引号?
a:告知在调用存入 api 时使用了 json.stringify 导致。