微信小程序的MINA框架封装了客户端的文件系统、任务管理、数据安全以及网络通信等功能,对于上层提供了一套完整的JavaScript API,方便开发者快速构建起一个应用。
MINA框架主要有两个部分构成分别是页面视图层和APPService应用逻辑层。在视图层可以通过类似于Html标签的标签语言来构建页面的视图结构,通过Wxss类似于CSS样式的的文件来控制页面的样式。在APPService逻辑层使用JavaScript来实现页面交互处理、网络请求等操作,要注意的是不能使用JavaScript的DOM操作。
MINA框架的核心是一个响应的数据绑定系统,让数据和师徒保持同步,在修改数据时只需要在逻辑层修改,视图层就会做成对应的更新。MINA框架的页面组件提供bindtap、bindtouchstart等事件监听属性,与AppService中的事件处理函数绑定在一起,实现视图层与逻辑层的交互,使用Virtualdom加快页面的渲染效率。
在小程序的逻辑层,主要进行事务逻辑处理,逻辑层的实现就是编写各个页面对应的js脚本文件。为了能搞笑的开发发小程序,在JavaScript的基础上微信团队做了一定的修改,比如增加了app和page方法,进行程序和页面的注册,提供扫一扫和支付等API,又比如每个页面有自己独立的作用域,并且提供模块化能力。
小程序的数据层有临时数据或缓存,在Page()中,使用setData函数将数据从逻辑层发送到视图层,同事改变this.data的值,需要注意单词设置的数据大小不能超过1M。也有文件存储,这里主要通过使用相应的数据API接口,例如wx.setStorage设置本地数据缓存,wx.getStorage获取本地数据缓存以及wx.clearStorage清理本地数据缓存。还有网络存储或调用,也是通过相应的API皆苦,比如wx.request发送网络请求,wx.uploadFile上传文件,wx.downloadFile下载文件,wx.navigateTo新窗口打开页面,wx.redirectTo在原窗口打开页面。
小程序的视图层用Wxml描述页面结构和Wxss来描述页面的样式。