小程序的开发框架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智 ...
随机推荐
- xmake-vscode插件开发过程记录
最近打算给xmake写一些IDE和编辑器的集成插件,发现vscode的编辑器插件比较容易上手的,就先研究了下vscode的插件开发流程,并且完成了xmake-vscode插件的开发. 我们先来看几张最 ...
- Redis 21问,你接得住不?
作者:菜鸟小于 cnblogs.com/Young111/p/11518346.html 1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 R ...
- [BZOJ4182]Shopping (点分治+树上多重背包+单调队列优化)
[BZOJ4182]Shopping (点分治+树上多重背包+单调队列优化) 题面 马上就是小苗的生日了,为了给小苗准备礼物,小葱兴冲冲地来到了商店街.商店街有n个商店,并且它们之间的道路构成了一颗树 ...
- 什么是Azkaban?
Azkaban是什么 Azkaban是由Linkedin开源的做批量工作流任务的调度器.在一个工作流内按照特定的顺序运行一组工作和流程.Azkaban定义了一种KV文件格式来建立任务之间的相互依赖关系 ...
- Webpack Loader种类以及执行顺序
我们在用webpack构建项目的时候,有两种配置打包文件的方式: import或者require :a-loader!b-loader!.././static/dog.png(打包某一个文件) 配置w ...
- linux常用汇总
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: Unable to ...
- CentOS7 设置电源选项,待机、睡眠、挂起
设置装有 CentOS7 的笔记本合盖后黑屏进入睡眠模式 systemd 能够处理某些电源相关的 ACPI事件,你可以通过从 /etc/systemd/logind.conf 以下选项进行配置: Ha ...
- Taro -- 原生微信小程序转taro
微信小程序转Taro (转发https://nervjs.github.io/taro/docs/taroize.html) Taro 可以将你的原生微信小程序应用转换为 Taro 代码,进而你可以 ...
- 关于webpack高版本向低版本切换 如何切换?
卸载:npm uninstall webpack -g 重新安装:npm install webpack@3.7.1 -g 直接安装指定版本就行了,如安装 2.4.1 版:cnpm install w ...
- 02cython调用c++文件
https://blog.csdn.net/ztf312/article/details/77340300 此时用python setup.py build_ext --inplace编译时报错如下: ...