什么是小程序,它是如何工作的?

什么是小程序,它是如何工作的?

小程序是一种可以在微信内快速获取和传播的应用程序,它不需要下载安装,也不占用手机存储空间,具有良好的用户体验。小程序的开发主要使用JavaScript、WXML和WXSS三种技术,它的运行环境分为渲染层和逻辑层,渲染层使用WebView渲染界面,逻辑层使用JsCore执行JavaScript代码。渲染层和逻辑层通过微信客户端进行数据通信,实现数据绑定和事件处理。小程序还可以调用微信提供的丰富的API,实现微信用户数据、扫一扫、支付等功能。

小程序是一种全新的连接用户和服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。

小程序的开发和运行原理如下:

一、开发技术 小程序的开发主要使用以下三种技术:

JavaScript:小程序的逻辑层使用JavaScript语言编写,可以实现数据处理、网络请求、接口调用等功能。小程序的JavaScript运行在JsCore中,没有浏览器对象,因此不能使用DOM和BOM相关的API,也不能使用一些依赖浏览器或NodeJS的第三方库。

WXML:小程序的渲染层使用WXML语言编写,它是一种类似于XML的标记语言,可以描述界面的结构。WXML支持数据绑定、列表渲染、条件渲染、模板引用等语法,可以根据数据动态生成界面内容。WXML还可以使用自定义组件,实现界面的复用和拓展。

WXSS:小程序的渲染层使用WXSS语言编写,它是一种类似于CSS的样式语言,可以设置界面的样式和布局。WXSS支持选择器、继承、导入等CSS特性,也支持一些扩展特性,如尺寸单位rpx、样式导入、全局样式等。

二、运行环境 小程序的运行环境分为渲染层和逻辑层,它们分别由不同的线程管理

渲染层:渲染层的界面使用WebView进行渲染,它负责解析和执行WXML和WXSS文件,生成界面视图,以及响应用户的操作事件。一个小程序可以有多个界面,因此渲染层可以有多个WebView线程,一个WebView线程对应一个小程序页面。

逻辑层:逻辑层使用JsCore线程运行JavaScript代码,它负责处理应用的逻辑,发送网络请求,调用微信提供的API等。一个小程序只有一个逻辑层,所有的页面共享一个JsCore线程,一个JsCore线程对应一个App Service。

渲染层和逻辑层之间需要进行数据通信,实现数据的同步和事件的触发。这个通信过程是通过微信客户端进行中转的,渲染层和逻辑层各自维护了一个数据队列,用来存储发送和接收的数据包,微信客户端则负责把数据包转发给对应的线程。

三、启动机制 小程序的启动可以分为两种情况:冷启动和热启动。

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

冷启动的步骤如下:

微信客户端从服务器下载小程序的代码包,如果有分包,则只下载主包,分包则按需下载。

微信客户端解压代码包,根据app.json文件获取小程序的基本信息和页面路径,加载小程序的逻辑层和渲染层。

微信客户端创建一个JsCore线程,执行app.js文件,创建App实例,触发onLaunch回调函数,完成逻辑层的初始化。

微信客户端创建一个WebView线程,加载小程序的首页面,执行对应的page.js文件,创建Page实例,触发onLoad和onShow回调函数,完成渲染层的初始化。

逻辑层和渲染层建立数据通信,进行数据绑定,生成界面视图,完成小程序的启动。

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

热启动的步骤如下:

微信客户端从本地缓存中获取小程序的代码包,无需从服务器下载,提高启动速度。

微信客户端恢复小程序的逻辑层和渲染层,触发App实例的onShow回调函数,以及当前页面的onShow回调函数,完成小程序的启动。

小程序的销毁时机:通常,只有当小程序进入后台一定时间,或者系统资源占用过高,才会被销毁。

具体而言包括以下几种情形:

当小程序进入后台,会维持一小段时间的运行状态,如果这段时间内都未进入前台,小程序会被销毁。

当小程序占用系统资源过高,可能会被系统销毁或被微信客户端主动回收。

在iOS上,当微信客户端在一定时间间隔内连续收到两次及以上系统内存告警时,会主动进行小程序的销毁,并提示用户该小程序可能导致微信响应变慢被终止。

建议小程序在必要时使用wx.onMemoryWarning监听内存告警事件,进行必要的内存清理。

更新时间: 2024-02-24 08:00:00
阅读量:
      声明:红数科技产品、服务、问答、文章如需转载请注明原创来源。本站部分产品、问答、文章和图片来源网络编辑,如存在版权问题请及时沟通处理。内容观点仅代表作者本人,不代表红数科技立场。请在线咨询获取最新产品、服务、价格、时间
免费咨询!真诚解答!帮你突破瓶颈!
请联系红数科技,我们将在技术角度免费解答和建议
协助您完善需求,明确方向,不走弯路