前言   微信小程序(Mini Program)是一种不用下载就能使用的应用程序。自2017年1月9日正式上线到现在,微信小程序已经构造了新的小程序开发环境和开发者生态环境。小程序也是多年来中国IT行业里一个真正能够影响到普通程序员的创新成果。由于其具有“极度轻量化、无处不在、用完即走”的更好用户体验和“一次开发、跨平台运行”的低开发成本,使其既可以服务于各行各业,也吸引了大量的开发者。小程序发展带来了更多的就业机会,社会效应不断提升。   编写本书的目的就是帮助读者学到微信小程序的开发技术,掌握解决实际问题的能力,提高项目开发水平,快速成为一名合格的微信小程序开发工程师。本书摒弃孤立介绍知识点的编排模式,而采用“案例诠释理论、项目推动实践”的编写思路,既讲解项目的实现过程和步骤,又讲解项目实现时所需的理论知识和技术,让读者在掌握理论知识后会灵活运用,并在新项目开发中不断拓展知识,真正实现“教、学、做”的有机融合,提升从案例模仿到应用创新的递进式项目化软件开发能力。   本书作者长期从事高校软件开发类课程的教学与应用开发,有丰富的教材编写经验。本书采用了作者主持研究的2018年教育部产学合作协同育人项目(腾讯微信事业部资助)中取得的成果作为部分内容。   全书共分8章,内容安排如下:   第1章 小程序开发环境。介绍微信小程序的基础知识,包括小程序的基本架构与特性、开发环境的搭建过程和创建小程序的步骤等。   第2章 小程序结构分析。介绍微信小程序的目录结构及作用,阐述小程序的整体描述文件和页面描述文件的功能及编写的语法规则,并通过技术实例演示了WXML、小程序页面生命周期的工作机制、全局页面配置文件和页面配置文件的编写方法。   第3章 界面设计。介绍微信小程序的常用样式、flex页面布局(弹性布局)的概念及它们在小程序界面设计中的使用方法。结合多个技术实例和仿“猜画小歌”界面、商品展示界面等项目案例,阐述微信小程序开发框架提供的view、text、input、button、swiper、image和scroll-view等基本组件在小程序开发中的应用场景和使用方法。   第4章 基本组件。介绍组件在小程序页面的定义和属性设置方法,介绍事件的定义、绑定和使用方法;结合多个技术实例和“小学生算术题”“猜扑克游戏”“信息登记页面”“毕业生调查表”和“购物车小程序”等项目案例,阐述微信小程序开发框架提供的基本组件的使用方法和应用场景。   第5章 数据存储与访问。介绍数据缓存API、图片API、位置API和文件API的用法,并结合多个技术实例和“随手拍”“文本阅读器”等项目案例阐述其应用场景和方法。   第6章 多媒体应用开发。介绍普通音频API、背景音频API、动画API和录音管理器的使用方法,并结合多个技术实例和“影音盒子”项目案例的“音乐播放器”“音视频录制器”的子模块阐述微信小程序中多媒体应用开发的流程、相关技术和应用场景。   第7章 硬件设备应用开发。介绍监测设备状态、跟踪用户行为和获取传感器数据等API的使用方法,并结合“指南针”“个性化闹钟”等项目案例介绍罗盘API、设备方向API、加速计API及振动API的应用开发过程和实现方法。   第8章 网络应用与云开发。介绍微信小程序开发框架访问第三方云数据库平台、小程序云开发、网络请求API、向服务器上传文件API以及从服务器下载文件API的使用方法,并结合多个技术实例和“实验室安全知识学习平台”“竞赛打分系统”“天气预报系统”等项目全面详细阐述用小程序实现网络访问的工作机制、基本原理和小程序网络应用开发的流程。   与同类图书相比,本书内容有以下特点:   (1)读者覆盖面广。由浅入深的知识点体系重构和开发技术介绍,既可以让零基础的初学者快速入门,掌握小程序的开发技术,也可以让具有一定编程基础的开发者找到合适的起点,进一步提升解决问题能力和项目开发能力。   (2)内容系统全面。系统全面地介绍微信小程序开发包含的180个知识点和应用场景,使读者既可以系统性地掌握理论知识,也可以获得通俗易懂的实例化技术文档。   (3)案例典型实用。直接选取面向行业企业需求的项目案例进行设计和实现,使读者既可以提高学习兴趣、巩固理论知识和强化工程实践能力,也可以将案例的解决方案应用到其他项目中。   (4)资料翔实丰富。本书配套62个开发技术范例和16个精彩项目案例的140个微课视频。读者不仅可以随时随地扫码观看重点、难点内容,还可以下载教学课件、教学大纲、习题和程序源代码等教学资源,更好地学习和掌握小程序开发技术,提高实际开发水平。   在本书的编写过程中得到了清华大学出版社的帮助和指导,周巧扣、李霞、叶苗等在资料收集和原稿校对等方面做了一些工作,在此一并表示感谢。   由于作者理论水平和实践经验有限,书中疏漏和不足之处在所难免,恳请广大读者提出宝贵的意见和建议。                              倪红军? 2019年10月