小程序/宿主环境

微信给小程序提供的环境成为宿主环境,我个人理解(不一定对,对宿主环境的真正理解我觉得需要知道小程序的详细框架原理以及和微信APP之间的联系):宿主环境包括了两大线程以及其他的一些代码(比如API定义函数、将小程序代码包注入宿主环境的代码等等)

通信模型

在这里插入图片描述
Native是微信客户端,逻辑层和渲染层是通过两个线程来管理,每个页面对应一个webView线程。

数据驱动:

类似于react和vue,只要改变数据,页面就会自动更新视图。
渲染层将wxml先转换成js对象,这个对象等价于一棵dom树,之后进行渲染,其中,逻辑层将数据通过Native发送给渲染层,通过比较差异再重新渲染差异的部分
问题:1:小程序既然不支持dom,那怎么处理得到的js对象呢,web是使用dom API来实现的,小程序怎么实现的呢?通过Native?
2:小程序求差是在哪个线程执行的?是webView吗?类似于react里的diff,是在setState()时执行render(),求出虚拟dom,然后进行diff比较,之后找到patch,再根据patch来更新真实的dom

APP和Pages:

  • APP:

宿主环境提供了App()构造器来注册一个程序App,要写在app.js里面:App({}),App实例是单例对象,其他页面可以使用getApp()来获取此对象,比如使用全局变量globalValue的时候。
App({})参数对象:

App({
   
	onLaunch: function(options){
   },//小程序初始化完成后触发,只执行一次
	onShow: function(options){
   },//后台切换到前台触发
	onHide: function(){
   },//前台切换到后台触发
	onError: function(msg){
   },//脚本错误或调用api失败触发
	globalValue: {
   } //全局变量的存储位置
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值