小程序指南--小程序运行时

news2024/12/27 13:27:50

第一节 运行环境

小程序可以运行在不同环境中,如下: 

1、ios/iPad os 微信客户端

2、Android 微信客户端

3、Windows Pc 微信客户端

4、Mac 微信客户端

5、小程序硬件框架

6、微信开发者工具

那么小程序逻辑层的脚本执行和组件渲染环境不同,性能就有所差异

1.1 iOs、iPadOS 和Mac OS上,JavaScript逻辑层代码是在JavascriptCore中被执行,视图层有由WKWebview来渲染

2.1 安卓环境下,小程序逻辑层的js代码运行在V8中,视图层由基于 Mobile Chromium内核微信自研的XWeb引擎渲染

3.1 Windows PC环境下,小程序逻辑层和视图层均用Chromium内核

4.1 开发者工具中,小程序逻辑层JavaScript代码在NW.js中运行,视图层由Chromium WebView渲染

逻辑层渲染层
ios/iPad osJavaScript CoreWKWebview
Android V8引擎基于 Mobile Chromium内核的XWebview
小程序开发者工具NW.jsChromium WebView

第二节 JavaScript 支持情况

运行限制

基于安全考虑,小程序不支持动态执行JS代码,即:

不支持使用 eval 执行js代码

不支持使用 new Funcion() 创建函数,new Function('return this')除外;

标准ECMAScript支持

小程序的JS执行环境在不同平台有所差异,不同平台对ECMAScript标准支持也存在差异,因此小程序基础库为了尽量抹平差异,内置了一份core-js Polyfill。core-js 可以将平台环境缺失的标准API补齐。

注意:平台对ES语法的支持差异无法抹平,所以,当使用高级语法是,如async/await时,需要借助代码转换工具来支持这些语法

无法被polyfill的API

如何判断当前环境需要哪些 Polyfill & 代码转换目标

特定的小程序基础库版本有最低微信客户端版本要求,如基础库 v2.15.0 要求安卓最低版本 7.0.22,iOS 最低版本 7.0.20。

而特定的客户端版本有最低操作系统版本要求,如 iOS 7.0.20 要求最低 iOS 10。

从而,当指定特定小程序基础库版本时(可以在 小程序管理页 【设置】-【基本设置】-【基础库最低版本设置】中设置),我们能够得到最低需要支持的执行环境。

具体数据可以从 这个开源库 中获得。

第三节 运行机制 小程序运行机制 | 微信开放文档

小程序从冷启动到最终被销毁会经历不同的状态,不同状态下,会有不同的表现。

1、小程序冷启动 

2、前台

3、后台

4、挂起

5、小程序销毁

1启动后进入2,

2,3在使用中可来回切换。

若切换至3,不切到2,5秒钟后进入4,此时处于“待机”状态。

处于4时,30分钟内被使用,则会切到2,否则进入5,小程序会被自动销毁。

3.1 小程序启动

小程序启动可分为两种情况,一种是冷启动、一种是热启动

(1)冷启动:如果用户首次打开,或者小程序销毁后被用户再次打开,此时小程序需要重新加载启动,这个就是冷启动

(3)热启动:如果用户已经打开过某小程序,然后一定时间内再次打开小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动

3.2 前台与后台

小程序启动后,界面展示给用户,此时小程序处于前台状态;

当用户关闭小程序时,小程序并未被真正的关闭,而是进入后台状态,此时小程序还可以短暂运行一小段时间,但部分API的使用会被限制

切后台的方式包括但不限于以下几种:

  • 点击右上角胶囊按钮离开小程序
  • iOS 从屏幕左侧右滑离开小程序
  • 安卓点击返回键离开小程序
  • 小程序前台运行时直接把微信切后台(手势或 Home 键)
  • 小程序前台运行时直接锁屏

当用户再次进入微信并打开小程序,小程序又会重新进入「前台」状态

3.3 挂起

小程序进入后台状态一段时间后(目前是5秒),微信会停止小程序JS线程的执行,小程序进入挂起状态。此时小程序的内存状态会被保留,但开发者代码的执行会停止,事件和接口回调会在小程序再次进入前台事被触发。

当开发者使用了后台音乐播放、后台地理位置等能力时,小程序可以在「后台」持续运行,不会进入到「挂起」状态

3.4 小程序销毁

如果用户很久没有使用小程序,或者系统资源紧张,小程序会被「销毁」,即完全终止运行。具体而言包括以下几种情形:

  • 当小程序进入后台并被「挂起」后,如果很长时间(目前是 30 分钟)都未再次进入前台,小程序会被销毁。
  • 当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。
    • 在 iOS 上,当微信客户端在一定时间间隔内连续收到系统内存告警时,会根据一定的策略,主动销毁小程序,并提示用户 「运行内存不足,请重新打开该小程序」。具体策略会持续进行调整优化。
    • 建议小程序在必要时使用 wx.onMemoryWarning 监听内存告警事件,进行必要的内存清理。
    • 小程序运行机制 | 微信开放文档

第四节 更新机制小程序更新机制 | 微信开放文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1922227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL基础篇】事务

事务简介 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或或撤销操作请求,即这些操作要么同时成功,要么同时失败。 典型事例:银行转账操作 假设张三向李四进行转账…

MySQL 9.0 新功能概览

官方文档 https://dev.mysql.com/doc/refman/9.0/en/mysql-nutshell.html 时隔 6 年多,上周 Oracle 发布了 MySQL 最新的大版本 9.0。我们一起来看看新版本有哪些东西。 用 JavaScript 写存储过程 半年前已经单独介绍过 「虽迟但到!MySQL 可以用 Java…

信息打点web篇--详解cdn识别与绕过

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文着重整理渗透过程中 cdn的相关知识点 cdn简要说明 我们一台服务器如果让外界访问,距离我们服务器近的地区访问的速度快,而远的地区访问速度则会大大减低。为了保证远区域用户的体验&a…

VR头显如何低延迟播放8K的RTSP|RTMP流

技术背景 我们在做Unity平台RTSP、RTMP播放器的时候,有公司提出来这样的技术需求,希望在头显播放全景的8K RTSP|RTMP直播流,8K的数据,对头显和播放器,都提出了新的要求,我们从几个方面,探讨下V…

Lingo学习(一)——基本界面、解方程、变量

一、Lingo基本界面 【步骤】 1.双击打开Lingo 2.弹出一个对话框,点击Cancel左边的Never Register即可,其余内容用不到。 3:界面自动弹出名为“Lingo Model – Lingo 1”的窗口,用于书写代码。 4:以解方程的题目:x12为例,写完代码后,点击“红色的靶心”运行程序。 5:首先Lin…

昇思学习打卡-13-LLM原理与实践/解码原理--以MindNLP为例

文章目录 搜索方法集束搜索(beam search)贪心搜索(greedy search) 采样池处理结果 一个文本序列的概率分布可以分解为每个词基于其上文的条件概率的乘积 搜索方法 集束搜索(beam search) Beam search通过在每个时间步保留最可能的 num_beams 个词,并从中最终选择出…

代码随想录-暑假算法第一天(数组篇)

代码随想录-暑假算法第一天(数组篇) 1. 二分查找 力扣题目链接(opens new window) 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否…

超酷的3D立体文字?分享 1 段优质 CSS 代码片段!

本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿! 大家好,我是大澈! 本文约 500 字,整篇阅读约需 1 分钟。 今天分享一段优质 CSS 代码片段,实现了超酷的3…

SPI协议与读写串行 FLASH

SPI 协议简介 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口,是一种高速、全双工、…

轻松选型,高效开发——业务开发集市助您一臂之力

在当今这个日新月异的时代,高效开发已成为企业保持竞争力的关键。为了满足市场对高效、灵活开发工具的迫切需求,OceanMind海睿思推出业务开发集市。这款开发工具汇集了众多丰富的、高度可定制的控件和组件,以及灵活的模板选型功能&#xff0c…

OpenGL笔记二之glad加载opengl函数以及opengl-API(函数)初体验

OpenGL笔记二之glad加载opengl函数以及opengl-API(函数)初体验 总结自bilibili赵新政老师的教程 code review! 文章目录 OpenGL笔记二之glad加载opengl函数以及opengl-API(函数)初体验1.运行2.重点3.目录结构4.main.cpp5.CMakeList.txt 1.运行 2.重点 3.目录结构 01_GLFW_WI…

户用光伏项目开发流程

1、收集业主信息 管理业主基本信息,包括但不限于联系方式、地址、房屋信息等。 2、业主开卡 每户都需要办理银行卡,用于电费结算和划转。 3、合同签约 业主开卡完成之后,平台方发起签约(支持线上签约)&#xff0c…

运行前端项目提示 run `npm fund` for details,如何解决?

经常出现在前端的一个小坑,分享一下技巧。 运行npm install命令终端提示: 107 packages are looking for funding run npm fund for details 解决方案: npm install --no-fund

实践致知第15享:如何取消文件的格式后缀?

一、背景需求 小姑电话说:我新建了一个excel表格,修改名字的时候总是容易删掉后面的字母(如下图所示),然后就打不开这个文件了! 二、解决方案 文件后面的字母是文件的扩展名,如果删掉之后&…

基础弱口令暴力破解

一、实验介绍 本实验中我们针对网站中的登录页面进行暴力破解,通过使用 Burpsuite 工具对网页进行暴力破解,体会学习暴力破解的基本过程,以及学习如何使用Burpsuite 工具。 二、实验目的 BurpSuite工具抓包。暴力破解基本流程。 三、实验…

白杨SEO:小红书追百度,知乎已落伍,从APP日活看,搞精准流量去哪与怎么做?

前言:这是白杨SEO公众号原创第540篇。为什么分享这个?看到啸哥在分享国内APP日活,恰好白杨SEO主要就是实战分享搞精准流量,所以希望大家也了解目前在哪些渠道去搞流量更好。如果有用,记得收藏或帮忙分享更多需要的人。…

微信小程序毕业设计-学习资料库系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

粉笔推出国内首个职教行业大模型,助力学员高效学习

7月12日,粉笔正式推出其自主研发的首个专注于职教行业的垂域大模型,并将于8月1日上线粉笔AI老师 “粉笔头”,为学员提供个性化、智能化的辅导服务。 在垂域大模型的基础上,粉笔结合10年来的教研积累、独有数据搭建RAG系统&#x…

乘积末尾的0

区间删除 解题思路: 乘积末尾0的个数取决于2和5的因子的数量。因此我们要对所有的数进行统计2和5的因子个数。接下来使用滑动窗口算法: 构建一个滑动窗口,要求保证删除窗口内的元素后,保证剩余元素的乘积末尾0的个数>k。因此只…

从Centos7升级到Rocky linux 9后,网卡连接显示‘Wired connection 1‘问题解决方法

问题描述 从Centos7升级到Rocky9后, 发现网卡eth0的IP不正确。通过nmcli查看网卡连接,找不到name为eth0的连接,只显示’Wired connection 1’ 查看/etc/NetworkManager/system-connections/,发现找不到网卡配置文件。 原因分析 centos7使…