微信小程序开发是笔者所在大学选的一门选修课,花的精力很少,这里记录一些对小程序架构的初步感知,以防遗忘。
先放个传送门:微信开放文档 · 小程序
微信小程序是基于Apache MINA通信框架的:
小程序提供的开发框架为MINA框架,它类似于淘宝Weex、Vue框架。MINA框架经过大量底层的优化设计,有着接近原生App的运行速度,对Android端和iOS端做到了高度一致的呈现,具有完备的开发和调试工具。
MINA框架通过封装微信客户端提供的文件系统、网络通信、任务管理、数据安全等基础功能,对上层提供一整套JavaScript API,让开发者能够非常方便地使用微信客户端提供的各种基础功能与能力,快速构建一个应用。
小程序运行时根据设备的不同而有差异。
根据官方文档的说法,小程序主要被分为两层:渲染层和逻辑层。渲染层主要由WXML、WXSS组成,逻辑层主要由JS组成(同时,小程序有自己的脚本语言WXS)。
小程序框架自带丰富的API,具体可以查阅开放文档,它们以wx.开头。
小程序的配置主要有三个方面:全局配置(app.json),页面配置(page.json),sitemap配置。同时,还有开发时对整个项目的配置project.config.json。
逻辑层主要包括以下几个操作:
1.在小程序启动的时候,有个被称为场景值的信息会被传入OnLauch或者OnShow中以供获取,用来描述用户进入小程序的路径。随后,小程序的生命周期开始。
2.小程序在app.js中调用App()方法注册为实例,该实例为单例(即不能多开)。
3.小程序的页面在app.json中使用Page()构造器注册,页面的路由交付小程序框架管理。
4.自定义的脚本逻辑操作等。自定义脚本包括JS和WXS,其中WXS是小程序原生的语言,不依赖JavaScript环境,但是比较简陋。对于一些简单的功能,应该尽可能使用WXS。
渲染层主要包括以下几个操作
1.WXML控制页面组成。WXML与HTML相比更加集成,WXML的每个节点都是组件(
2.组件拥有自己的属性,写在WXML里。组件可以自定义,自定义组件也由WXML和JS组成,拥有自己的样式WXSS和配置数据JSON。
3.WXSS与CSS语法差异不大,选择器存在差异。
4.小程序的渲染逻辑被集成在WXML里,包括条件分支wx: if和循环体wx: for。同时提供了模板,可以快速复用某一段代码进行渲染。
逻辑层与渲染层的交互
逻辑层与渲染层的交互通过一系列事件来完成,因此整个小程序的架构就是事件驱动架构。小程序还提供了符合Moustache语法的数据绑定,逻辑层也可以获取渲染层节点的信息。小程序支持插件。
小程序拥有很多能力,包括基础网络、存储能力,硬件连接能力,开放能力(与微信主程序、其它网络位置乃至设备交互),可以调用框架API等方法实现。