小程序上线以来,一贯被称为“便携版”的APP,关于二者之间的区别,无外乎小程序相对轻便、开发成本低,下面让咱们来看一下小程序的“庐山真面目”!html
1、app的分类web
大体能够分为这3种:编程
native app(原生app)、web app、hybrid app(混合app),关系以下图:json
2、什么是小程序小程序
小程序是介于web网页应用和原生应用的一种产物;api
小程序的特色:微信
3、小程序架构架构
视图层和逻辑层分离,经过数据驱动,事件交互,不直接操做DOM并发
视图层负责渲染页面结构,逻辑层负责逻辑处理、数据请求、接口调用等app
视图层与逻辑层经过数据和事件进行通讯,逻辑层提供数据给视图层,视图层经过绑定/捕获事件发起交互让逻辑层处理
视图使用WebView
渲染,JS由JSCore(IOS)/X5(Android)/nmjs(DevTool)
渲染解析
JSBridge下架起上层开发与Native(系统层)的桥梁,使得小程序可经过API使用原生的功能,且部分组件为原生组件实现,从而有良好体验。实现了对底层API接口的调用,因此在小程序里面开发,开发者不用太多去考虑OS的实现差别的问题,安心在上层的视图层和逻辑层进行开发便可。
数据通讯机制:
分为数据单项绑定、事件绑定。
4、小程序项目结构
约定优于配置(convention over configuration),也称做按约定编程,是一种软件设计范式,旨在减小软件开发人员需作决定的数量,得到简单的好处,而又不失灵活性。
5、小程序生命周期
小程序的生命周期分为应用生命周期和页面生命周期
应用生命周期:
属性 | 类型 | 描述 | 触发时机 |
---|---|---|---|
onLaunch | Function | 生命周期函数--监听小程序初始化 | 当小程序初始化完成时,会触发 onLaunch(全局只触发一次) |
onShow | Function | 生命周期函数--监听小程序显示 | 当小程序启动,或从后台进入前台显示,会触发 onShow |
onHide | Function | 生命周期函数--监听小程序隐藏 | 当小程序从前台进入后台,会触发 onHide |
Page()函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。
object 参数说明:
属性 | 类型 | 描述 |
---|---|---|
data | Object | 页面的初始数据 |
onLoad | Function | 生命周期函数--监听页面加载 |
onReady | Function | 生命周期函数--监听页面初次渲染完成 |
onShow | Function | 生命周期函数--监听页面显示 |
onHide | Function | 生命周期函数--监听页面隐藏 |
onUnload | Function | 生命周期函数--监听页面卸载 |
用Page 实例说明的页面的生命周期
由上图可知,小程序由两大线程组成:负责界面的视图线程(view thread)和负责数据、服务处理的服务线程(appservice thread),二者协同工做,完成小程序页面生命周期的调用。
视图线程有四大状态:
服务线程五大状态:
6、启动方式
小程序启动会有两种状况,一种是「冷启动」,一种是「热启动」。 假如用户已经打开过某小程序,而后在必定时间内再次打开该小程序,此时无需从新启动,只需将后台态的小程序切换到前台,这个过程就是热启动;冷启动指的是用户首次打开或小程序被微信主动销毁后再次打开的状况,此时小程序须要从新加载启动。
小程序冷启动时若是发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序须要等下一次冷启动才会应用上。 若是须要立刻应用最新版本,可使用 wx.getUpdateManager API 进行处理。