微信小程序底层

小程序框架

在这里插入图片描述
小程序只有一个App Service,整个生命周期常驻内存,是由App Service来加载运行的

逻辑层是处理事务逻辑的层,是MINA事务交互的逻辑中心

一方面包含Manage负责逻辑处理部分的执行,另一方面包含底层提供的waservice.js的文件来封装各个API的接口,让各个平台的运行环境都可以通过API使用小程序微信客户端的能力

视图层和逻辑层是双线程通信的,视图层和逻辑层之间提供了数据传输和事件系统
视图层和逻辑层通过系统层的JSBridge进行通信
逻辑层把数据变化通知到视图层,触发视图层的页面更新
视图层把出发的事件通知给逻辑层进行业务处理

WXML是具有元素属性和文本的节点树结构,在节点树结构中,每一个节点都是一个上下文的关系,所在渲染WXML时,小程序的运行环境会把WXML节点树转化成一个JS的对象进行渲染

在逻辑层发生数据变更的时候,需要APP Service提供的的setData方法把数据从逻辑层传递到视图层。web view容器在渲染节点内容的时候会把传过来的数据进行一个前后的对比差异,这个是通过一个算法来进行计算的,然后把差异应用到节点树上,渲染出正确的UI界面

运行机制

在这里插入图片描述
左侧是在启动的时候,微信客户端里面的视图层和逻辑层的一些交互逻辑以及数据缓存的存取操作

在小程序启动的时候,会向CDN请求最新的一个代码包,第一次启动的时候要等到代码包下载完毕注入到web view容器执行完以后才能看到小程序的页面,所以在网络情况不好的时候会感觉的启动时间会稍微长一些,客户端会帮我们把代码包缓存到本地,在下一次启动的时候会先向CDN请求是否有最新版本的代码包,这里会有一些校验的逻辑,如果没有最新的代码包,会运行之前已经缓存好的代码包,同时会去异步下载最新版本的代码包,供我们下次启动的时候来使用。

CDN即内容分发网络,即把我们请求的内容分发到离我们最近第一个网络节点服务器,提高用户访问的响应速度,以及成功率,解决一些带宽和服务器性能带来的一些延迟问题。

在小程序内可以访问第三方服务器,发起一个Ajax请求,服务器会返回一个JSON格式的数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值