第3章 小程序框架结构介绍 3.1MINA框架 微信团队为小程序提供的框架命名为MINA应用框架(在微信官方文档中现已取消该名称),它的核心是一个响应的数据绑定系统。 如图3.1所示,MINA框架分为两大部分,分别是页面视图层与AppService应用逻辑层。在页面视图层,开发者使用WXML文件搭建页面的基本视图结构,使用WXSS文件控制页面的展现样式。小程序自己开发了一套WXML标签语言和WXSS样式语言,并非直接使用标准的HTML5+CSS3。 图3.1微信小程序框架结构图 AppService应用逻辑层是MINA的服务中心,由微信客户端启用异步线程单独加载运行。页面渲染所需的数据、页面交互处理逻辑都在AppService中实现。AppService使用JavaScript编写交互逻辑、网络请求、数据处理,小程序中的各个页面可以通过AppService实现数据管理、网络通信、应用生命周期管理和页面路由。 MINA框架提供视图层与逻辑层之间的数据绑定和事件绑定系统,该系统实现了视图层和逻辑层的基于数据绑定和事件机制的数据交互: 在逻辑层传递数据到视图层的过程中,它让数据与视图非常简单地保持同步; 当作数据修改的时候,只需要在逻辑层修改数据,视图层就会做相应的更新。 文件结构 微信小程序开发快速入门微课视频版 第 3 章小程序框架结构介绍 MINA框架程序包含一个描述整体程序的App和多个描述各个页面的pages,一个MINA程序的主体部分由3个文件组成,这3个文件必须放在项目的根目录下,如图3.2所示。 图3.2MINA程序结构 pages用于创建页面,图3.2中的index页面和logs页面,用于展示欢迎页和小程序启动日志页面。小程序中的每个页面的“路径+页面名”都要写在app.json的pages中,且pages中的第一个页面是小程序的首页即index页面。表3.1和表3.2分别给出了程序主体部分的3个文件以及构成一个页面的4个文件。 表3.1组成MINA程序主体的3个文件 文 件 名 称 是 否 必 需 作用 app.js 是 小程序逻辑 app.json 是 小程序公共设置 app.wxss 否 小程序公共样式表 app.js是小程序的脚本代码,用于监听并处理小程序的生命周期函数、声明全局变量等。app.json用于配置小程序由哪些页面组成,配置小程序的窗口背景色,配置导航条样式,以及配置默认标题; 需要注意的是该文件不可添加任何注释,示例代码为。 { "pages": [ "pages/index/index", "pages/logs/logs" ], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle": "black" }, "sitemapLocation": "sitemap.json" } 小程序中每新增或减少页面时,都需要对app.json文件中的pages数组进行修改。 app.wxss是整个小程序的公共样式表,可以在页面组件的class属性上直接使用app.wxss中定义的样式规则,示例代码为: /**app.wxss**/ .container { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: space-between; padding: 200rpx 0; box-sizing: border-box; } 表3.2给出了微信规定的小程序的界面组织模式中的4个文件构成,其中,.wxml文件(页面结构文件)类似HTML,负责页面结构,可绑定数据; .wxss文件(样式表文件)类似CSS; .json文件(配置文件)用于配置样式,如选项卡、窗口样式等; .js文件(脚本文件)用于运行页面逻辑,使用JS语言。 表3.2构成一个MINA页面的4个文件 文 件 类 型 是 否 必 需 作用 wxml 是 页面结构 wxss 否 页面样式表 json 否 页面配置 js 是 页面逻辑 3.2WXML标签语言 3.2.1WXML简介 WXML用于指定界面的框架结构,而WXSS则用于指定界面的框架及元素的显示样式。 WXML是微信小程序团队设计的一套标签语言,可以构建出页面的结构,开发者通过借助WXML提供的各种组件,可以很方便地实现文字的嵌入、图片的嵌入、视频的嵌入等。 我们知道,在开发基于Web的网络系统时,网页编程通常采用HTML+CSS+JS组合,HTML用来描述当前这个页面的结构,CSS用来描述页面的显示样式,JS用来处理这个页面和用户的交互。 在小程序中,WXML充当的就是类似HTML的角色。打开pages/index/index.wxml,其中代码如下。 获取头像昵称 {{userInfo.nickName}} {{motto}} 从视图层的角度来说,WXML由标签、属性等构成,但也存在如下与HTML的不同之处。 1. 开发工具不同 常见的HTML5的开发工具有Adobe Dreamweaver CS6、Adobe Edge、DevExtreme、JetBrains WebStorm等; 小程序开发有自己的开发工具,名为“微信开发者工具”,可以实现同步本地文件+开发调试+编译+预览+上传+发布等一整套流程。 2. 开发语言不同 小程序自己开发了一套WXML标签语言和WXSS样式语言,并非直接使用标准的HTML5+CSS3。 常见的HTML有,定义声音内容的标签,定义粗体字的标签,定义表格标题的标签,定义文档中的节的标签等; HTML5中又新增了一些标签,如装载非正文内容附属信息的