小程序框架将整个系统划分为视图层和逻辑层,视图层是由框架设计的标签语言WXML(WeiXin Markup Language)和用于描述WXML组件样式的WXSS(WeiXin Style Sheets)组成,它们的关系就像HTML和CSS的关系。WXML和WXSS在渲染时会被框架解析为不同端的本地渲染文件,这样保证一套代码能在多处运行,并且能最大化地接近原生App。渲染原理和React Native、Weex十分接近,开发过程中我们不必深究WXML的渲染原理,只需要有个大致了解即可。小程序逻辑层是一套运行在本地JavaScript引擎的JavaScript代码,在此基础上框架实现了一套模块化机制,让每个JS文件有独立的作用域和模块化能力,这套模块化机制遵循CommonJS规范,熟悉NodeJs的开发者应该有一定了解。小程序整体开发流程非常接近前端HTML+CSS+JavaScript的开发模式,与前端开发不同的是,在小程序中没有DOM的概念,在本地的JavaScript引擎中也没有window、document等对象,我们不能想当然地通过操作DOM来操作页面,小程序中的视图层和逻辑层的交互是通过数据绑定和事件响应实现的,这是一种单向绑定的机制。这套机制需要首先将逻辑层和视图层的数据和事件进行绑定,当需要修改页面时,逻辑层只需要调用特定的setData方法修改已绑定的数据,这时框架会自动触发WXML重新渲染,达到逻辑层对视图层的控制;当框架接收到用户交互操作时,会根据视图层绑定的事件,执行逻辑层中对应的事件函数,达到逻辑层对视图层的响应,视图层与逻辑层的关系如图2-1所示。这套机制是小程序框架的工作原理,在后续内容中我们将反复提及,加深大家对它的理解