小程序运行时
2022-02-10 14:50:14 16 举报
AI智能生成
小程序运行时
作者其他创作
大纲/内容
运行机制
小程序的生命周期
小程序启动
冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,
此时小程序需要重新加载启动,即冷启动
此时小程序需要重新加载启动,即冷启动
热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,
此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动
此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动
从小程序生命周期的角度来看,我们一般讲的「启动」专指冷启动,
热启动一般被称为后台切前台
热启动一般被称为后台切前台
前台与后台
小程序启动后,界面被展示给用户,此时小程序处于「前台」状态
当用户「关闭」小程序时,小程序并没有真正被关闭,而是进入了「后台」状态
前台切后台的方式
点击右上角胶囊按钮离开小程序
iOS 从屏幕左侧右滑离开小程序
安卓点击返回键离开小程序
小程序前台运行时直接把微信切后台(手势或 Home 键)
小程序前台运行时直接锁屏
挂起
小程序进入「后台」状态一段时间后(目前是 5 秒),微信会停止小程序 JS 线程的执行,小程序进入「挂起」状态。
此时小程序的内存状态会被保留,但开发者代码执行会停止,事件和接口回调会在小程序再次进入「前台」时触发。
此时小程序的内存状态会被保留,但开发者代码执行会停止,事件和接口回调会在小程序再次进入「前台」时触发。
当开发者使用了后台音乐播放、后台地理位置等能力时,小程序可以在「后台」持续运行,不会进入到「挂起」状态
小程序销毁
小程序冷启动的页面
(A 类场景)若启动的场景中不带 path
基础库 2.8.0 以下版本,进入首页
基础库 2.8.0 及以上版本遵循「重新启动策略」,可能是首页或上次退出的页面
homePage
homePageAndLatestPage
(B 类场景)若启动的场景中带有 path,则启动进入对应 path 的页面
小程序热启动的页面
(A 类场景)若启动的场景中不带 path,则保留上次的浏览的状态
(B 类场景)若启动的场景中带有 path,则 relaunch 到对应 path 的页面
退出状态
更新机制
未启动时更新
启动时更新
wx.getUpdateManager
运行环境
iOS/iPadOS 微信客户端
逻辑层的 JavaScript 代码运行在 JavaScriptCore 中
视图层是由 WKWebView 来渲染的
Android 微信客户端
逻辑层的 JavaScript 代码运行在 V8 中
视图层是由基于 Mobile Chromium 内核的微信自研 XWeb 引擎来渲染的
Windows PC 微信客户端
逻辑层 JavaScript 和视图层都是用 Chromium 内核
Mac 微信客户端
逻辑层的 JavaScript 代码运行在 JavaScriptCore 中
视图层是由 WKWebView 来渲染的
小程序硬件框架
用于调试的微信开发者工具等
逻辑层的 JavaScript 代码是运行在 NW.js 中
视图层是由 Chromium Webview 来渲染
JavaScript支持情况
运行限制
基于安全考虑,小程序中不支持动态执行 JS 代码
标准 ECMAScript 支持
小程序的 JS 执行环境 在不同平台上的执行环境存在差异,因此导致不同平台对 ECMAScript 标准的支持存在差异。
小程序基础库为了尽量抹平这些差异,内置了一份 core-js Polyfill。core-js 可以将平台环境缺失的标准 API 补齐
小程序基础库为了尽量抹平这些差异,内置了一份 core-js Polyfill。core-js 可以将平台环境缺失的标准 API 补齐
需要注意的是,平台对 ECMAScript 语法的支持差异无法抹平,
当你需要使用一些高级语法时(如 async/await 时,则需要借助代码转换工具来支持这些语法
当你需要使用一些高级语法时(如 async/await 时,则需要借助代码转换工具来支持这些语法
无法被 Polyfill 的 API
与标准的差异
Promise 时序差异
0 条评论
下一页