小程序的开发框架MINA及小程序的启动机制

MINA框架分三个部分
视图层(View):有很多页面,每个页面有wxml和wxss组成的,视图结构和展现样式
逻辑层(App Service):处理事物逻辑的地方以及数据交互的服务中心
系统层(Native):微信客户端的原生能力(微信客户端的功能)
小程序的视图层和逻辑层时双线程通信的,视图层和逻辑层之间,提供了数据传输和事件系统,视图层和逻辑层之间通过JSBrideg进行的
逻辑层把视图变化通知给视图层,然后触发视图层的页面更新;
视图层触发的事件通知给我们逻辑层,逻辑层进行业务处理;
视图层如何将数据的变化实时的展现出来?
wxml拥有元素属性和文本节点的树状图,在节点结构中,每个节点都有上下文的关系,所有在渲染wxml中,小程序会把wxml的节点树,转化为js对象,逻辑层发生变更时,在js文件中通过App()方法中的data对象向data()方法在视图层进行渲染,将前后数据进行对比,这种差异通过diff算法,渲染出正确的ui界面;
小程序做了很多的优化
例如:wxs和wxss及wxml等都是在ui线程上的,通常我们请求的数据,我们都会进行filter(过滤)的处理,这个时候我们放到,ui线程去做,会避免跨线程通信的消耗
当我们的逻辑层(线程)受到阻塞的话,依旧不影响ui线程的正常处理和渲染,也在次避免了跨线程通信的消耗;
, 小程序的启动机制:
小程序的第一次启动,加载时间是比较长的,但后面的启动的话,加载时间都比较快;
小程序启动分两种,冷启动和热启动;
冷启动:用户首次启动 或 小程序被微信主动销毁后在此打开的情况,此时小程序需重新加载启动;
热启动:假如用户打开某个小程序后,一定时间内在次打开这个小程序,这个时候我们就不需要进行重新加载,只是从后台切换到前台,这就是热启动
小程序被销毁的状态的两种情况:
第一种:小程序进入后台,小程序帮我们维持小程序的一个状态,超过这个时间后,微信就会主动销毁,目前这个时间是5分钟
第二种:在一定时间内,我们受到2个及以上的系统警告,小程序就会被销毁,目前这个时间间隔是5秒;
、
小程序启动机制流程图

小程序在启动的时候,微信客户端它里面的视图层 和 逻辑层他的一些交互逻辑,以及数据缓冲的存取操作
小程序在启动的时候,会在CDN请求最新的代码包,第一次启动,我们需要代码包下载完毕后,注入到web view的容器后,我们才能执行我们的小程序页面,所以在网不好的情况下,感受到启动时间较长,后端会帮我们把代码包缓存到本地,我们下次请求的时候,我们会在CDN上请求是否有新版本的代码包,这里会有较验逻辑,我们会运行之前已经下载好的代码包,同时又会异步下载最新版的代码包,下次启动的时候用。
CDN概念:内容分发到网络,主要作用把我们请求到的内容,分布到我们最近的一个网络节点服务器,提高用户服务的响应速度及成功率,解决一些带宽,服务性能带来的延迟问题;
我们在小程序内访问第三方服务器发送的一个ajax请求,服务器会返回一个json格式的数据
小程序的开发框架MINA及小程序的启动机制的更多相关文章
- 微信小程序云开发框架
概述 一直做后端服务器开发,最近看了一篇文章介绍小程序的云开发模式,觉得挺有意思,就尝试了一下,由本文做个记录. 因为不是专业的小程序开发人员,也没有做过网页开发,所以论述中出现错误难以避免,请多谅解 ...
- 小程序web开发框架-weweb介绍
weweb是一个兼容小程序语法的前端框架,你可以用小程序的写法,来写web单面应用.如果你已经有小程序了,通过它你可以将你的小程序运行在浏览器中.在小程序大行其道的今天,它可以让你的小程序代码得到最大 ...
- 微信小程序开发公测,小程序账号申请办法攻略
11月3号晚上 10 点,微信公众平台发布公告,宣布微信小程序正式开放公测.此次小程序公测允许开发者将产品提交至微信公众平台审核,但是暂时不支持发布,也就是说普通消费者若想体验小程序,还需要等待一段时 ...
- 微信小程序全选,微信小程序checkbox,微信小程序购物车
微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组 1.标题titl ...
- 客户端程序通过TCP通信传送"小文件"到服务器
客户端程序通过TCP通信传送"小文件"到服务器 [c#源码分享]客户端程序通过TCP通信传送"小文件"到服务器 源码 (不包含通信框架源码,通信框架源码请另行 ...
- 应用程序初次运行数据库配置小程序(Java版)
应用程序初始化数据库配置小程序 之前写过一个Java版的信息管理系统,但部署系统的时候还需要手动的去配置数据库和导入一些初始化的数据才能让系统运行起来,所以我在想是不是可以写一个小程序在系统初次运行的 ...
- 微信小程序之微信登陆 —— 微信小程序教程系列(20)
简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...
- 微信小程序开发教程 #043 - 在小程序开发中使用 npm
本文介绍了如何在微信小程序开发中使用 npm 中包的功能,大大提高微信小程序的开发效率,同时也是微信小程序系列教程的视频版更新. 微信小程序在发布之初没有对 npm 的支持功能,这也是目前很多前端开发 ...
- 微信小程序自运营器 微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营)
自动发单,自动评价,自动评论,自动推广 微信小程序自运营器 微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营) 我们会根据你的微信公众号或微信小程序定制开发带有一定AI智 ...
随机推荐
- 002/区块链核心概念与原理详解(Mooc)
1.课程介绍 (一).区块链前世今生 密码朋克--神秘组织(邮件组) 2.区块链核心概念与原理 (一)比特币是数字货币 为什么叫区块链? 因为比特币系统里面的数据是一个个的区块来存储,并且通过hash ...
- 20191105 《Spring5高级编程》笔记-第9章
第9章 事务管理 一些名词: 2PC(2 Phase Commit) XA协议 JTS(Java Transaction Service) JCA(Java EE Connector Architec ...
- MySQL的练习
mysql登录:方法1:使用Command Line Client登录,缺点:不显示报错信息 方法2:使用cmd登录(cmd的常用:查看ip地址:ipcongfi-----定时关机:shutdown ...
- 20171110面试笔记 服务器端程序员+C/C++开发
socket 模型: https://www.cnblogs.com/nsnow/archive/2011/05/03/2036017.html http://blog.csdn.net/normal ...
- RMAN备份与恢复 —— 参数文件还原
在RMAN用语中,“还原”与“恢复”具有不同的含义,还原(restore)是指访问先前生成的备份集,从中得到一个或多个对象,然后再磁盘上的某个位置还原这些对象.还原与恢复时分离的.恢复(re ...
- Linux 使用ansible配置集群间互信
安装pip $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 $ sudo python get-pip.py # ...
- 前端:let与var的区别
详细情况可跳转到下面这个链接阅读: https://www.cnblogs.com/yukixing/p/11523259.html [收集别人总结好的知识点,也是高效学习的一种方式!]
- Linux基础命令一(补充)
echo ls ls–l ---- ll cd / 根目录 cd ~ cd - 返回上一个目录 env ip addr 显示物理网络地址,缩写:ip a /etc/init.d/network ...
- HTML拖放元素
实现来回拖放图片 <!DOCTYPE HTML> <html> <title>来回拖放元素</title> <meta charset=" ...
- meter标签度量衡如何改变颜色
此文章为转载,目的为了方便整理学习笔记. 在meter中要想改变颜色,需要用到五个值,分别是:min(最小值).max(最大值).low.high.value和optimum,其中前四个值会把整个进度 ...