小程序,巧应用:微信小程序开发实战第2版.pdf
http://www.100md.com
2020年1月16日
![]() |
| 第1页 |
![]() |
| 第4页 |
![]() |
| 第20页 |
![]() |
| 第26页 |
![]() |
| 第34页 |
![]() |
| 第621页 |
参见附件(18501KB,773页)。
小程序,巧应用:微信小程序开发实战,这是一本指导你如何进行基础的小程序开发的教程书籍,从创建一个小程序应用开始,带你开始小程序的开发工作,让你轻松学会开发小程序!

微信小程序开发实战介绍
本书系统全面地讲解微信小程序的开发技术。开篇创建一个小程序项目并解析体验,介绍如何由零开始创建一个小程序,全面体验小程序的开发工具、界面、开发框架、实现过程及其主要代码框架,了解小程序的应用场景及开发要求。接着介绍小程序开发基础,包括小程序开发的语言与语法、函数方法、模块、事件交互等。然后详细介绍了组件的应用与开发,包括开发过程与组件应用技巧,还详细分析了API接口,包括使用各个微信原生API接口进行小程序开发的技巧。后介绍了几个小程序实战案例,让读者实践小程序各项能力的应用及掌握一些应用技巧。本书结构清晰,由浅入深,可帮助读者快速掌握小程序项目的开发。
微信小程序开发实战作者
熊普江,现任腾讯微信架构师,负责公司业务资源规划与技术架构评审等工作。自1997年涉足互联网,曾服务美国Supreme、太平洋网络、PPTV等技术与互联网公司,任网络营运总监、运维总监等职务,2012年加入腾讯。逾18年互联网从业背景,拥有丰富的大型网络架构规划与建设,海量用户平台规划与营运技术支撑,超大规模业务资源规划与技术架构管理优化等经验。
微信小程序开发实战目录
第1章 创建自己的第一个小程序
第2章 小程序初体验
第3章 小程序开发基础
第4章 框架组件的开发应用
第5章 API接口的开发应用
第6章 小程序开发纲要
第7章 小程序经典案例
第8章 小程序优化与演进
小程序发布的新闻信息
2016年1月在广州举办的微信公开课上,“微信之父”张小龙在他演讲的最后一部分,宣布将推出“应用号”。小龙提到:“我自己当了多年程序员,我觉得我们应该为开发团体做一些事情。”至于“应用号”的样子,小龙当时的大概表述是“类似于公众号,但比公众号更便捷、更好找,有更容易使用的形态”。这就是微信小程序的由来。
历时8个多月,在2016年9月21日,微信小程序公布开启“内测”。随即这个内测消息便刷爆了朋友圈,我在接下来的数天内便接到不下30个“求内测邀请码”需求留言,小程序火爆程度可见一斑。由于微信团队首批仅开放了200个内测号,物以稀为贵,网络上不久就有传言:转让某个带小程序功能的微信号,账号有30.7万女粉丝,起拍价300万。
2016年11月3日,小程序正式开放公测。我再次在朋友圈刷屏中体验到了“小程序”的火爆,感受到了开发者、企业以及市场对微信小程序的好奇、疑惑,同时也感受到大家在移动浪潮中拥抱变化的期待。
微信官方页面指出:“小程序可以在微信内便捷地获取和传播,同时具有出色的使用体验。”张小龙在小程序内测首发当天,也在朋友圈给出了解释:小程序是一种不需要安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开。这也体现了“用完即走”的理念,用户无须担心安装应用过多的问题。应用将无处不在,随时可用,但又无须安装卸载。
小程序,巧应用:微信小程序开发实战截图


小程序,巧应用:微信小程序开发实战
(第2版)
熊普江 谢宇华 编著
ISBN:978-7-111-57306-7
本书纸版由机械工业出版社于2017年出版,电子版
由华章分社(北京华章图文信息有限公司,北京奥
维博世图书发行有限公司)全球范围内制作与发
行。
版权所有,侵权必究
客服热线:+ 86-10-68995265
客服信箱:service@bbbvip.com
官方网址:www.hzmedia.com.cn
新浪微博 @华章数媒 目录
第2版前言
序一
序二
第1版前言
第1章 创建自己的第一个小程序
1.1 准备工作
1.1.1 成为微信公众平台开发者
1.1.2 获取小程序AppID
1.1.3 安装开发者工具包
1.2 创建第一个小程序——Hello WXapplet
1.3 微信Web开发者工具的操作与使用
1.3.1 界面与操作
1.3.2 编辑功能
1.3.3 调试功能1.3.4 项目功能
1.3.5 运行小程序
第2章 小程序初体验
2.1 理解小程序
2.1.1 Hello WXapplet项目目录及文件构成
2.1.2 Hello WXapplet项目的代码实现
2.2 小程序的线程架构与开发步骤
2.2.1 小程序线程架构
2.2.2 小程序开发步骤
2.2.3 为Hello WXapplet添加新页面及示例
代码
2.3 进一步了解小程序开发框架
2.3.1 MINA框架
2.3.2 目录结构
2.3.3 逻辑层2.3.4 视图层
2.3.5 数据层
2.4 小程序的发布与使用
2.4.1 小程序预览、上传、审核与发布
2.4.2 小程序加载运行
2.5 深入理解小程序的应用场景
2.5.1 小程序入口与界面
2.5.2 小程序与HTML 5应用开发的差异
2.5.3 小程序的最佳应用场景
2.5.4 小程序对企业、开发者的意义与影响
2.5.5 开发者角色与技能要求
2.5.6 小程序的能与不能
第3章 小程序开发基础
3.1 配置
3.1.1 全局配置~app.json3.1.2 页面配置~page.json
3.2 逻辑层
3.2.1 注册程序~App方法
3.2.2 注册页面~Page方法
3.2.3 模块及调用
3.2.4 微信原生API
3.3 视图层
3.3.1 WXML详解
3.3.2 WXSS详解
3.3.3 框架组件
第4章 框架组件的开发应用
4.1 视图容器组件
4.1.1 view
4.1.2 scroll-view
4.1.3 swiper4.1.4 swiper-item
4.2 基础内容组件
4.2.1 icon
4.2.2 text
4.2.3 progress
4.3 表单组件
4.3.1 button
4.3.2 checkbox-group
4.3.3 checkbox
4.3.4 form
4.3.5 input
4.3.6 label
4.3.7 picker
4.3.8 picker-view
4.3.9 radio-group4.3.10 slider
4.3.11 switch
4.3.12 textarea
4.4 互动操作组件
4.4.1 action-sheet
4.4.2 modal
4.4.3 toast
4.4.4 loading
4.5 页面导航组件
4.6 媒体组件
4.6.1 image
4.6.2 audio
4.6.3 video
4.7 地图组件
4.8 画布组件4.9 WXML组件与HTML的差异
第5章 API接口的开发应用
5.1 网络API
5.2 媒体API
5.2.1 图片API
5.2.2 录音API
5.2.3 音频播放控制API
5.2.4 音乐播放控制API
5.2.5 视频API
5.3 文件API
5.4 数据缓存API
5.5 位置API
5.6 设备信息API
5.7 界面API
5.7.1 交互反馈API5.7.2 页面导航API
5.7.3 动画API
5.7.4 绘图API
5.7.5 其他API
5.8 开放API
5.8.1 登录API
5.8.2 用户信息API
5.8.3 微信支付API
5.8.4 模板消息API
5.8.5 客服消息API
5.8.6 分享API
5.8.7 获取二维码API
第6章 小程序开发纲要
6.1 界面
6.2 网络6.3 本地数据及缓存
6.4 设备硬件
6.5 微信开放接口
6.6 媒体
6.7 后端开发与设计
第7章 小程序经典案例
7.1 文件上传与下载——小相册
7.1.1 功能详解
7.1.2 程序结构
7.1.3 程序细化
7.1.4 程序体验
7.2 流媒体转码与播放——视频点播
7.2.1 功能详解
7.2.2 程序目录结构
7.2.3 程序细化7.3 互动——高冷机器人
7.3.1 功能详解
7.3.2 程序目录结构
7.3.3 程序细化
7.4 LBS应用——周边信息点
7.4.1 功能详解
7.4.2 程序结构
7.4.3 程序细化
7.5 WebSocket高级应用——远程控制设备
7.5.1 应用场景
7.5.2 开发实现
7.5.3 案例总结
7.6 扫码应用——微投票
7.6.1 功能详解
7.6.2 程序结构7.6.3 程序细化
第8章 小程序优化与演进
8.1 为什么选择小程序,而不是公众号或App
8.2 未来演进方向探讨
8.3 小程序持续优化方法
附录A 微信小程序平台运营规范
附录B 微信小程序平台常见拒绝情形
附录C 沟通联络方法第2版前言
小程序是微信团队打造的“连接一切”的新事
物、新能力。因此,本书第1版的首要原则是:及
时。其中我们介绍了小程序的框架、开发方法与应
用案例,希望让广大移动互联网爱好者能在第一时
间对小程序的开发有相对全面的认识,并着手开发
自己的小程序。
但也正因为微信小程序是个新生事物,自其
2017年1月9日正式上线以来,得到广大开发者的好
评,提出了更多场景与能力的诉求,微信团队响应
得非常迅速,在短短的几个月时间内,又为小程序
开放了更多的新能力。这些新能力包括但不限于:
·开放个人开发者申请。·公众号自定义菜单可打开小程序。
·公众号模板小程序可打开小程序。
·公众号绑定小程序时可选择给粉丝群发通
知,粉丝点击通知消息即可进入小程序。
·兼容线下二维码,原有二维码也能进入小程
序(参考摩拜单车)。
·App分享链接到微信,可用小程序打开。
·小程序提供蓝牙相关API,可连接硬件。
·小程序和微信卡券结合,在小程序中就可领
取会员卡和优惠券。
·支持长按识别二维码进入小程序。·开放第三方平台,可以把小程序交给第三方
开发或管理。
·推出了新的小程序二维码,小程序二维码不
再是枯燥的方形。
·公众号可关联不同主体的小程序了,一个公
众号最多可关联13个小程序。
·公众号文章支持添加小程序卡片,点击卡片
即可进入小程序。
·小程序之间可以相互跳转了,在小程序中长
按识别小程序码即可跳转到其他小程序。
·小程序的大小升级为2MB。
·……因此,我们有必要及时更新内容,以确保读者
可以利用本书开发内容更丰富、功能更强大的小程
序。
同时,我们响应读者的诉求,在第2版中扩展
了新的应用案例,使得内容更加丰富与实用,更易
实践。
另外,我们还为本书的应用案例提供了源代码
下载地址,便于读者使用。下载地址
为:http:www.5iops.comsample.zip
小程序正在让“连接一切”的移动互联网生态成
为现实,未来将无限可能。
作者2017年5月序一
不管是美国的工业互联网,还是中国的互联网
+,这些都表明互联网正在催生新一轮的产业革
命。移动App在不断地连接“人”,创造一个个新的
基于人的应用场景;物联传感器在不断地连
接“物”,也在创造一个个新的基于物的应用场景。
连接带来了大的并发量和数据量,从而又促使了云
计算和大数据这种分布式计算方式和数据处理方式
的普及。“云大移物”为代表的新一代信息技术是当
今互联网技术的核心,它们正在形成一种新的体
系。正如时任工业和信息化部副部长杨学山先生在
中国新一代IT产业推进联盟成立仪式上用“五个
新”做的精辟总结:信息技术正在形成新的体系结
构(新体系);新的技术体系形成了新的能力(新能力);在新的能力支撑下正在形成许多新的应用
模式(新模式);新的应用模式正在导致新的竞争
格局(新格局);新体系、新能力、新模式和新格
局一起在推动人类社会迈入新的发展阶段(新阶
段)。
在新的互联网时代,企业级IT应用正在面临颠
覆性的变革:从单机架构走向分布式架构,从瀑布
式开发走向迭代式开发,从大模块走向微服务,从
大项目交付走向持续交付。这一切都需要企业IT开
发与应用的模式要适应互联网环境下敏捷开发、快
速迭代和弹性扩展的需求。可以说,企业级IT应用
已经到了一个不得不换代的关键时期。在新的互联
网基础设施平台上,进行原生云应用的开发,已是
企业IT的必然选择。微信确实是一个伟大的产品,它不仅成为我们
每一个人日常沟通交流的工具,也成为了整个社会
的信息基础设施。在国内,由于微信几乎在实时连
接每一个人,它自然也成了一个最强大的“入口”。
公众号、服务号和企业号的诞生已经让微信在开始
连接后端的企业系统,但是这些后端的系统还可能
是过去那些笨重的遗留系统。如何真正实现互联网
化的即连即用,或许应用号才开始真正打开一个企
业级的应用市场,我们正翘首以待。业界一直有一
个说法:“企业级应用太重,很难互联网化”,然而
我一直不以为然。企业架构(Enterprise
Architecture)之父Zachman告诉我们,复杂的复合
件应该是建立在简单的原子件组装基础上。没有良
好的架构设计,系统会有大量的重复开发和重叠,复杂性也会随着需求的增加而指数级增长,到一定时候不得不推倒重来。今天的大多数企业信息化还
处于这种手工作坊式的“复杂”漩涡中。大道至简,但“简”需要好的架构设计。但愿企业号的“小程
序”和“巧应用”能为我们下一代信息化打开一扇新
的窗户。
熊普江和谢宇华分别是我们第二届和第三届互
联网CIO-CTO班学员。特别是普江,他本人是腾讯
的架构师,对互联网架构有深刻的认识,对腾讯的
所有产品都有足够的了解。我很高兴能为他们俩的
这本书作序!可以说,《小程序,巧应用》这本书
是这个时代的及时雨,它不仅仅告诉我们应用号小
程序的开发和使用,也为我们下一代信息化模式转
型做了一个非常好的铺垫。
姚乐,CIO时代学院院长2016年11月28日序二
“触手可及、用完即走”,作为用户当然会期待
这样的应用产品。微信小程序正是这样的产品,它
面对月活超过8亿用户的微信生态,为服务开发者
推出了一个方便快捷地连接用户的开发平台。
从小程序对外发布内测,我身边就有很多人在
关注。当时我创办的1024学院也计划邀请微信的专
家来上公开课,为此我还联系了本书作者普江,他
当时说公测期,内部人士不好对外发声,正式上线
后可以安排。
没有想到普江自己藏着大招,从内测开始到现
在不到两个月,便给我传了一份书稿,让我写序。认识普江很多年,知道他不仅是技术专家,也
是热心公益、乐于分享助人的好朋友。就如他自己
所言,因为太多的朋友找到他问,促使他开始准备
这本书,普江的初心还是要帮助朋友,帮助小程序
的开发者。
这本书可能是第一本微信小程序的实战类书
籍。感谢普江、宇华两个作者夜以继日的辛苦努
力,能让广大开发者在第一时间拿到详实的开发指
南和参考资料。
我们也很期待在微信生态里出现一批高质量的
微信小程序,为用户提供更多、更好、更便捷的服
务。
——吴华鹏,iTechClub(互联网精英俱乐部)理事长,1024学院创始人第1版前言
随着移动互联网的兴起,互联网作为一种信息
技术在传统社会与传统工业中发挥的作用越来越强
大,互联网与整个社会运作正在加速深度融
合。“互联网+”的趋势显而易见,政府、社会组
织、企业以及个人,都对移动互联网时代的融合或
转型充满期待而又心怀忐忑:移动化的场景如何结
合?是否有足够的移动应用开发能力?即便场景与
能力都满足,是否能应对获取用户成本、打开频率
等移动互联网运营的巨大挑战?
好在我们有微信!这是一款为移动时代而生,让世界互联网震惊的中国创新应用。经过5年多的
发展,微信已有超过8亿月活用户且仍在不断进化与演进,是移动时代当之无愧的超级App王。更加
幸运的是,腾讯的微信团队源源不断地将微信的能
力开放出来,为我们提供了融合与转型的超强连接
力。
2016年1月在广州举办的微信公开课上,“微信
之父”张小龙在他演讲的最后一部分,宣布将推
出“应用号”。小龙提到:“我自己当了多年程序
员,我觉得我们应该为开发团体做一些事情。”至
于“应用号”的样子,小龙当时的大概表述是“类似
于公众号,但比公众号更便捷、更好找,有更容易
使用的形态”。这就是微信小程序的由来。
历时8个多月,在2016年9月21日,微信小程序
公布开启“内测”。随即这个内测消息便刷爆了朋友
圈,我在接下来的数天内便接到不下30个“求内测邀请码”需求留言,小程序火爆程度可见一斑。由
于微信团队首批仅开放了200个内测号,物以稀为
贵,网络上不久就有传言:转让某个带小程序功能
的微信号,账号有30.7万女粉丝,起拍价300万。
2016年11月3日,小程序正式开放公测。我再
次在朋友圈刷屏中体验到了“小程序”的火爆,感受
到了开发者、企业以及市场对微信小程序的好奇、疑惑,同时也感受到大家在移动浪潮中拥抱变化的
期待。
微信官方页面指出:“小程序可以在微信内便
捷地获取和传播,同时具有出色的使用体验。”张
小龙在小程序内测首发当天,也在朋友圈给出了解
释:小程序是一种不需要下载安装即可使用的应
用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开。这也体现了“用完即走”的理
念,用户无须担心安装应用过多的问题。应用将无
处不在,随时可用,但又无须安装卸载。
移动互联网时代的微信应用不可或缺,微信小
程序切合了时代需要,毫无疑问会成为政府、组织
机构、企业以及开发者必争的互联网应用场景。微
信小程序必将再一次扩展微信强大的“连接力”,帮
助我们解决现有服务痛点,或者发掘、衍生出新的
商业模式,帮助行业、企业以及政府机构改善服务
或实现“互联网+”转型。
感谢微信团队,为我们带来微信小程序这个新
生事物。绝大部分场景下,不用单独开发App的时
代来临了。那么如何开发小程序?如何将现有的服
务或场景与小程序结合?由于小程序是新生事物,基本上多数人都无经
验可言。与小龙一样,我觉得此时有必要为所有对
小程序感兴趣、有期待的朋友,提供一些有关小程
序开发的指南,这是一件非常有意义的事情。
由于我在工作上与微信团队联系紧密,沟通频
繁,有近水楼台优势;而且对腾讯业务有相对全面
的了解,熟悉丰富的应用场景,学习了大量小程序
项目案例。
自小程序内测开启以来,我们更是夜以继日,同步研读与理解微信团队的文档,梳理开发逻辑,测试各个场景案例,希望尽早奉献给大家一本从入
门到精通的小程序开发大全。
我们尝试通过本书将我们的先发优势发挥出来。由小程序的框架、语法、函数及API开始,结
合丰富实用的案例,帮助大家熟练掌握小程序的开
发与应用,并探讨小程序的适用范围以及未来优化
演进的方向。
本书读者对象包括:
·前端开发工程师
·微信应用开发者
·移动开发爱好者
·计算机相关专业的学生
如何阅读这本书
作为“开放连接体系”的一环,微信团队为小程序提供连接标准与规范,最大限度地降低了开发门
槛,但开发小程序还是需要一定的“专业开发能
力”与程序开发的理解力。
微信小程序的开发是基于框架的。因此,开发
者首先要理解“框架”(framework)的概念。
从软件设计角度,框架是一个可复用的软件架
构解决方案。框架规定了应用的体系结构,阐明软
件体系结构中各层次间及其层次内部各组件间的依
赖关系、责任分配和控制流程,框架表现为一组接
口、抽象类以及实例间协作的方法。
框架一般是成熟、稳健的,可以处理系统中很
多的细节问题,比如,事物处理、安全性、数据流
控制等问题。框架一般都为多人所用,所以结构很好,扩展性也很好,而且它是不断升级的,可以直
接享受别人升级代码带来的好处。
显然,框架极大地方便了开发者,减少了开发
代码量并提升了代码质量。
微信团队为小程序提供的开发框架为MINA框
架,它类似于淘宝Weex、Vue框架。MINA框架经
过大量底层的优化设计,有着接近原生App的运行
速度,对Android端和iOS端做到了高度一致的呈
现,具有完备的开发和调试工具。
微信团队为小程序的开发者提供了包含UI界
面、社交与支付、语音、多媒体、LBS服务、手机
硬件、网络传输等基础能力。功能丰富且实用,可
以覆盖绝大部分移动应用的场景需求。基于对框架的理解与小程序能力及开发过程,我们将本书基本内容划分为五大块:
·创建一个小程序项目并解析体验:由零开始
创建一个小程序,全面体验小程序的开发工具、小
程序界面、开发框架、实现过程及代码解析,了解
小程序的应用场景及开发要求。这部分内容非常适
合对小程序开发感兴趣的初学者。
·小程序开发基础指南:按框架构成,阐述小
程序开发的语言与语法、函数方法、模块及事件交
互等。这部分内容对小程序开发者而言,是必须掌
握的部分。
·组件开发应用指南:详细阐述使用组件进行
页面视图的开发过程与组件应用技巧,熟练掌握组件的使用,将大大提高小程序开发的效率。
·API接口开发应用指南:微信强大的基础能力
均通过API接口开放出来,它为小程序实现强大功
能及适配各种应用场景提供了可能。这一部分内容
阐述如何使用各个微信原生API接口进行小程序开
发,可帮助开发者创建出功能强大且极具原生体验
的小程序应用。
·小程序经典案例:通过几个应用场景的案
例,让读者实践小程序的各项功能并掌握一些应用
技巧。
本书力图帮助读者充分理解小程序的功能、开
发过程,由浅入深,使读者快速掌握小程序项目的
开发。相信读者通过学习本书,一定可以尝试简单、高效地搭建具有原生App体验的小程序应用或
服务。
致谢
在写作本书的过程中,得到了很多同行、同事
以及朋友的鼓励,在此衷心感谢。也感谢华章公司
编辑们的努力,感谢家人的支持与理解。
场景代表未来,每一个对应现实需要的服务场
景或实用功能的小程序,通过微信的连接与巧妙应
用,汇聚起来,最终成为改变世界的力量。
我们相信:小程序,巧应用,可以成就大梦
想。
现在,我们邀请所有对移动互联网服务与应用感兴趣的朋友,都来开发微信小程序。
作者
2016年12月第1章 创建自己的第一个小程序
学习计算机语言,一般会最先接触“Hello
World!”程序。与之类似,要掌握微信小程序的开
发,我们也先来创建自己的第一个小程序实例。1.1 准备工作
微信小程序是继订阅号、服务号、企业号之
后,微信公众平台上全新的一种连接用户与服务的
方式。
开始创建之前,我们需要做些准备工作,包括
工作账号及项目ID获取,开发环境要求与搭建等,这也是开发小程序必备的前提工作。1.1.1 成为微信公众平台开发者
成为微信公众平台的开发者,是小程序开发的
首要条件。只有成为微信公众平台开发者,才可以
使用公众平台的各种开发接口。如果你已经是开发
者,则可以跳过本节。
一般来讲,开发者的微信号就是小程序的开发
者ID。要注意的是:微信号可以独立存在,而开发
者ID不能独立存在,它必然要绑定于某个公众平台
服务项目,如公众号或小程序。因此,若要成为开
发者,还需要有公众平台服务(订阅号、服务号、企业号、小程序)账号或归属于某个公众平台服务
的开发者。如果还没有公众平台小程序服务账号,需要先注册,注册入口为:https:mp.weixin.qq.com,点击首页右上角“立
即注册”进行注册。经过以下步骤完成小程序服务
账号注册:
1)填写账号信息。
2)邮箱激活。
3)信息登记。
注意 目前小程序项目不仅开放给企业、政府、媒体及其他组织,也已支持个人开发者注
册,但对个人开发者所支持的开发类目与API能力
相对较少或受限,如暂不支持电子商务与网上超市
等类目,暂不支持个人认证、支付与卡券等API。
完成注册后,可以登录公众平台(网址为https:mp.weixin.qq.com)并完善微信小程序信
息(如小程序名称、头像、小程序介绍、服务范围
等)。
然后我们就可以绑定开发者了。登录后进
入“用户身份”页面,选择“开发者”进行绑定,如图
1-1和图1-2所示。
图1-1 用户身份管理图1-2 绑定开发者
注意 已认证的小程序最多可以绑定20名
开发者。未认证的小程序最多可以绑定10名开发
者。由于个人不能注册小程序账号,但这并不意味
着个人不能进行小程序开发,这时可以通过已有的
订阅号(或新注册的订阅号)开发小程序。步骤如
下:
1)使用订阅号账号,登录公众平台(用电脑
在https:mp.weixin.qq.com中登录),在左边菜单
中,选择“开发”→“基本配置”,点击“开通”,成为
开发者。
2)在左边菜单中,选择“开发”→“开发者工
具”→在页中点选“Web开发者工具”的“进入”,点
选“绑定开发者微信号”,如图1-3所示。成功后可以
看到个人头像;如图1-4所示。之后,开发者微信
号可在Web开发者工具中进行公众号或小程序的开
发与调试。图1-3 开发者管理
图1-4 绑定开发者微信号
注意 绑定后,开发者手机的微信里会收
到一条消息,需要接受邀请,才能成为真正的开发者。1.1.2 获取小程序AppID
成功注册小程序账号后,会有唯一的AppID。
登录https:mp.weixin.qq.com,在页面左边的菜单
中,点选“设置”→“开发设置”,可查看到微信小程
序的AppID,如图1-5所示。
注意 这里不可使用公众号(服务号或订
阅号)的AppID。没有AppID也可以进行小程序开
发练习,只是部分功能受限,且不能上传发布。图1-5 开发者设置
要在手机上体验此AppID的小程序,默认只有
公众平台小程序账号的管理员微信号可以;其他微
信号还需要进行“绑定开发者”的操作。即在“用户
身份”-“开发者”模块中,绑定需要体验该小程序的
微信号。1.1.3 安装开发者工具包
作为开发者,需要有开发环境。这里需要下载
安装开发者工具包。截止于2017年5月9日,微信团
队提供的开发者工具包版本为0.17.170900,有
Windows 32位、Windows 64位及Mac三种版本。官
方下载地址
为:https:mp.weixin.qq.comdebugwxadocdevdevtoolsdownload.html
成功下载适当的版本后,在开发者的电脑上进行安
装。下面以Windows 64位安装包为例,描述安装过
程。
双击下载的安装包,将出现安装向导,如图1-
6所示。
点击“下一步”,完成开发者工具包的安装,如图1-7所示。
运行“微信Web开发者工具”,将会要求开发者
使用手机微信扫码登录,如图1-8所示。
图1-6 安装向导之一图1-7 安装向导之二图1-8 微信Web开发者工具启动界面
至此,我们创建第一个小程序所需的准备工作
全部完成。1.2 创建第一个小程序——Hello
WXapplet
事不宜迟,我们马上开始创建第一个微信小程
序——Hello WXapplet。
在安装开发者工具的电脑上运行“微信Web开
发者工具”,通过开发者的微信扫码进入后,即可
得到如图1-9所示的界面。图1-9 添加小程序项目
点击“添加项目”,填入前面我们获得的
AppID(无AppID可以忽略),并输入项目名
称“Hello WXapplet”,选定本地文件夹作为“项目目
录”,如图1-10所示。图1-10 指定项目名称
勾选“在当前目录中创建quick start项目”后,点
击“添加项目”按钮,即已成功创建了我们的第一个
微信小程序项目——Hello WXapplet。
Hello WXapplet项目创建成功后,即进入并看
到完整的开发者工具界面。我们创建的HelloWXapplet这个小程序只包含两个页面:首页及信息
页,实现一些简单的功能。其中,首页显示当前登
录的微信号头像及昵称。点击首页,则进入信息
页,可以查看到小程序启动的日志信息。我们将在
第2章中全面解析Hello WXapplet这个项目的代码。
在进行Hello WXapplet小程序项目代码介绍之
前,我们需要熟悉一下微信Web开发者工具的操
作。1.3 微信Web开发者工具的操作与使
用
“工欲善其事,必先利其器”。熟悉开发者工具
界面与操作,将为我们今后的开发带来极大的便
利。1.3.1 界面与操作
微信开发者工具功能非常强大与便捷,集成了
开发调试、代码编辑及程序发布等功能。主界面如
图1-11所示。
图1-11 微信开发者工具-主界面
开发者工具界面基本划分为四大区域:1区“顶部菜单”,2区“导航菜单”,3区“目录文件模拟运
行”,4区“编辑调试开发”。1区与2区是固定的。3
区与4区会依据选择导航菜单区的不同功能或模式
有所不同。
1区“顶部菜单”最为简单,开发者使用到的机
会也不多。“设置”是配置开发机运行程序时如何连
接网络(见图1-12)。“动作”是指“刷新”“后退”“前
进”等操作,主要在网页或界面调试时使用。“帮
助”则是本Web开发者工具的版本与版权声明等信
息。图1-12 微信开发者工具-设置
2区“导航菜单”是开发者经常切换使用的功能
区。特别是其中的“编辑”与“调试”功能将是开发者
使用最多的重要功能。下面重点介绍这两个功能。1.3.2 编辑功能
我们先来看其中的“编辑”功能。点击“编辑”后
出现的界面如图1-13所示。
原来的3区部分就变成了项目的目录与文件列
表区,4区部分则变成了对应所选文件的代码编辑
区,我们也称之为代码编辑器。
微信开发者工具提供的代码编辑器,可以对当
前项目对应文件进行编码工作,同时也可以对文件
进行基本的添加、删除及重命名操作。
代码编辑器现在支持4种文件的编辑:wxml、wxss、js以及json文件。当然编辑器支持了较为完
善的自动补全功能,大大方便了开发者。代码编辑器还支持快捷键操作,而且快捷键功
能与行为基本保持与其他编辑器一致。比如光标相
关快捷键操作如下:
图1-13 微信开发者工具-编辑
·Ctrl+End:移动到文件结尾。
·Ctrl+Home:移动到文件开头。·Ctrl+i:选中当前行。
·Shift+End:选择从光标到行尾。
·Shift+Home:选择从行首到光标处。
·Ctrl+Shift+L:选中所有匹配。
·Ctrl+D:选中匹配。
·Ctrl+U:光标回退。
再比如,格式调整的快捷操作如下:
·Ctrl+S:保存文件。
·Ctrl+[,Ctrl+]:代码行缩进。
·Ctrl+Shift+[,Ctrl+Shift+]:折叠打开代码块。·Ctrl+C,Ctrl+V:复制粘贴,如果没有选中任
何文字则复制粘贴一行。
·Shift+Alt+F:代码格式化。
·Alt+Up,Alt+Down:上下移动一行。
·Shift+Alt+Up,Shift+Alt+Down:向上向下复
制一行。
·Ctrl+Shift+Enter:在当前行上方插入一行。
快捷键可以说是程序开发者的至爱,编辑器也
支持自定义快捷键。关于如何自定义快捷键,可参
考下节“调试”功能中的“快捷键设置项”。1.3.3 调试功能
我们再来看导航菜单区的“调试”功能,这是开
发者检测代码结果实现与排查问题的核心工具,界
面如图1-14所示。
图1-14 微信开发者工具-调试
我们看到,这时3区变成了“模拟器”,4区变成
了调试工具与输出区。模拟器将如实地模拟微信小程序项目在客户端
的逻辑与操作表现,绝大部分的功能与API调用均
能在模拟器上正确呈现。
调试工具与输出区的顶部是一行菜单,分别
是:Console、Sources、Network、Storage、AppData、Wxml,最右边的扩展菜单项是定制与控
制开发工具钮“ ”。下面我们一一进行简单介绍。
注意 本章节涉及的代码及含义,读者若
不理解也不需要在意,在这里主要了解菜单的功能
与操作即可。
Console页:控制台信息页,它有两个作用:
1)开发者直接在此输入代码并调试,如图1-
15所示。图1-15 Console页调试
2)显示小程序的错误输出,如图1-16所示。
图1-16 Console页输出错误提示
Sources页:源文件调试信息页,用于显示当前
项目的脚本文件,如图1-17所示。注意 因为小程序框架会对脚本文件进行
编译工作,在源文件页面中我们看到的文件其实是
经过处理之后的脚本文件,所以我们编写的代码都
被包含在define函数中。对于页面(page)的代
码,则在打包脚本文件尾部,require函数会完成主
动调用动作。
Network页:网络调试信息页,用于观察和显
示每个元素请求信息和套接字(socket)状态等网
络相关的详细信息,如图1-18所示。
Storage页:数据存储信息页,用于显示当前项
目使用存储API(wx.setStorage或
wx.setStorageSync)接口的数据存储情况。比如,我们在Console中输入:
wx.setStorage({key:name,data:Roeyxiong}),则在Storage页面中就可以
看到我们存储了一个Key-Value数据,如图1-19所
示。
图1-17 Sources页图1-18 Network页
AppData页:用于调试显示当前小程序项目此
时此刻的应用具体数据,实时地回显项目数据调整
情况。即我们可在此处编辑修改数据,反馈到当前
界面上去。比如,我们将“Hello World”这个字,改
为“Hello WXApplet”,界面上马上就显示出相应的
效果,如图1-20所示。图1-19 Storage页
图1-20 AppData页注意 这里的调试修改并不会保存到代码
中。
Wxml页:用于帮助开发者调试WXML转化后
的界面。通过这里的调试可以看到真实的页面结构
及对应的WXSS属性,同时可通过修改对应的
WXSS属性,在模拟器中即时查看修改后的情形。
并且,可以通过调试区左上角的选择器 ,快速
地找到页面中组件所对应的WXML代码,如图1-21
所示。
例如,我们先点击①定位,在模拟器中选择定
位点②,快速定位到WXML代码段③。然后我们可
以在最右边的样式④中进行修改调配,并立即查看
效果。图1-21 Wxml页
最右边的扩展菜单项——定制与控制开发工具
钮“ ”,主要包括开发工具的一些定制与设置,如“Show Console”(显示控制台页),“Search all
files”(查找文件),“Shotcuts”(快捷键自定义或
配置),“Settings”(开发者工具的环境参数设定,包括喜好Preferences,工作区域Workspace、黑箱
Blackboxing,支持模拟的手机设备型号Devices,网络带宽及时延限制Throttling等),“Help”(帮
助)以及“More tools”(更多工具)。这些工具包
括:Inspect devices(检测设备)、Network
conditions(网络条件)、Rendering settings(渲染
设定)、Sensors(重力传感器)。这里不展开叙
述,如图1-22所示。
图1-22 微信开发者工具-定制化配置1.3.4 项目功能
导航菜单区的“项目”功能,用来显示当前项目
的细节,包括图标、AppID以及目录信息等。同
时,提供了小程序发布功能(上传)与手机预览功
能(预览)。
我们点击“预览”,开发者工具会将项目代码进
行编译与构建,生成代码包上传到微信服务器,如
图1-23所示。成功后会显示一个二维码,这样开发
者就可以用手机微信扫描它,并在手机上看到小程
序项目的真实表现。图1-23 微信开发者工具-项目1.3.5 运行小程序
1.调试预览
开发者可以在微信开发者工具中点击左侧导
航“调试”功能,以便在模拟器中运行小程序,查看
小程序运行效果。
2.手机预览
开发者也可以将小程序上传到微信小程序平台
中,让用户或测试与开发人员通过手机微信客户端
来扫码,以装载小程序,并在微信客户端环境下运
行。
3.开发者手机预览在开发者工具左侧菜单栏中选择“项目”,点
击“预览”,扫码后即可在微信客户端中体验,如图
1-24所示。
图1-24 预览小程序第2章 小程序初体验
上一章我们成功地创建了第一个示例小程序
——Hello WXapplet。本章通过解析这个小程序项
目,使大家尽可能对小程序有个全局的认知,包括
小程序的框架、目录结构、开发步骤以及入口界
面、示例代码的使用与运行等。2.1 理解小程序
对于用户而言,小程序的直观表现只是多个相
互关联的页面。我们的小程序Hello WXapplet也一
样,它由2个相互关联的页面构成:首页(index)
与信息页(logs)。点击首页的头像就切换到信息
页,在信息页点击“返回”可以再返回到首页,如图
2-1所示。图2-1 两个相互关联的页面
小程序的开发实际上就是实现这些页面的展示
(视图),以及实现“页面上用户交互事件”、“页
面间切换逻辑”、“数据存储及网络调用”等事务与
逻辑处理的过程。2.1.1 Hello WXapplet项目目录及文件构成
我们先从文件目录结构上来了解Hello
WXapplet项目的构成。点击开发者工具左侧导航
的“编辑”,我们可以看到Hello WXapplet项目的目
录结构及包含文件如图2-2所示。图2-2 Hello WXapplet项目的目录结构
目录结构显示:小程序项目在创建时的目录
(示例的本地开发目录为:“D:\小程序巧应用”)
之下,包含3个app开头的文件(app.js、app.json、app.wxss)以及pages目录与utils目录。其中pages目
录存放2个页面(index与logs)的构成文件。从示
例中,我们看到:每个页面都是一个目录,目录名
就是唯一的页面名,其下再由以页面名为前缀的
2~4个文件组成。
对小程序的目录文件结构,我们可以归纳一
下,如图2-3所示。图2-3 小程序的目录文件结构
左侧3个app文件必须放在小程序根目录下,其
他文件则由开发者自由控制。这3个文件说明如
下:
·app.js是小程序的脚本代码,用来监听并处理
小程序的生命周期函数、声明全局变量。
·app.json是对整个小程序的全局配置,配置小
程序是由哪些页面组成,配置小程序的窗口背景色
等。·app.wxss是整个小程序的公共样式表。
其中app.js和app.json是必需的。
小程序页面是由同路径下同名但不同后缀的
2~4个文件组成:
·.js后缀的文件是页面脚本文件,该文件实现页
面逻辑与事件处理。
·.json后缀的文件是页面配置文件。
·.wxss后缀的是页面样式表文件。
·.wxml后缀的文件是页面结构文件,该文件
与.wxss文件一起构建出页面。
其中.js与.wxml文件是必需的。2.1.2 Hello WXapplet项目的代码实现
我们再从代码层面了解Hello WXapplet项目的
实现,根据小程序的目录结构,代码实现有两大部
分——小程序实例与页面,下面分别介绍。
1.小程序实例的代码实现
在Web开发者工具的“编辑”模式下,我们来看
Hello WXapplet这个项目里的代码文件,最关键也
必不可少的是app.js、app.json、app.wxss这三个文
件,分别代表脚本文件、配置文件、样式表文件。
微信小程序运行时会读取这些文件,并生成小程序
实例。
app.js是小程序的脚本代码,我们一般在这个文件中监听并处理小程序的生命周期函数、声明全
局变量、调用框架提供的丰富的API等。如本例
app.js文件中,我们调用了的同步存储及同步读取
本地数据的API——wx.setStorageSync及
wx.getStorageSync。代码见程序清单2-1。想了
解更多可用API,可参考本书第5章“API接口的开发
应用”。
程序清单2-1 小程序app.js
app.js
App({
onLaunch: function {
调用API从本地缓存中获取数据
定义一个数组变量logs
var logs = wx.getStorageSync('logs') || []
在数组logs的集合开头插入一个元素,值为当前时间
logs.unshift(Date.now)
将数组logs写入本地名为logs缓存块中
wx.setStorageSync('logs', logs)
}, 定义一个后面index.js中会调用到的函数,参数cb意为callback,即回调函数
getUserInfo:function(cb){
var that = this;
if(this.globalData.userInfo){
判断cb是否存在且为function类型,若是则传进参数调用cb
typeof cb == function cb(this.globalData.userInfo) }else{
调用登录接口
wx.login({
success: function {
wx.getUserInfo({
success: function (res) {
that.globalData.userInfo = res.userInfo;
typeof cb == function cb(that.globalData.userInfo)
}
})
}
});
}
},globalData:{
userInfo:null
}
})
注意 没有编程基础的读者很容易被上述
代码中的“回调函数”打蒙圈,这种情况建议先百度
或Google了解一下“回调函数”的概念。
app.json配置文件是对整个小程序的全局配
置,代码见程序清单2-2。开发者将在这个文件中
配置小程序是由哪些页面组成、配置小程序的窗口
背景色、配置导航条样式、配置默认标题等。注意 app.json不可添加任何注释。
更多关于小程序的全局配置项可参考本书3.1
节。
程序清单2-2 小程序app.json
{
pages:[
pagesindexindex,pageslogslogs
],window:{
backgroundTextStyle:light,navigationBarBackgroundColor: fff,navigationBarTitleText: WeChat,navigationBarTextStyle:black
}
}
app.wxss样式表文件是整个小程序的公共样式
表,代码见程序清单2-3。我们可以在页面“组件”的
class属性上直接使用app.wxss中声明的样式规则。
关于.wxss文件中的样式规则可参考本书3.3.2节“wxss详解”。
程序清单2-3 小程序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;
}
app.wxss文件中上述程序代码定义了一个名为
container的样式。
2.小程序页面的代码实现
在我们创建的Hello WXapplet小程序项目中,包含两个页面——index页面和logs页面,即首页和
小程序启动日志的展示信息页,它们都在pages目录下。
每一个小程序页面可由同路径下同名的2~4个
不同后缀文件组成,如:Hello WXapplet小程序的
index页面就由pages目录下index路径中index.js、index.wxml、index.wxss、index.json四个文件组
成,它们分别是页面脚本文件、页面结构文件、页
面样式表文件、页面配置文件。其中,.wxml与.js
文件是页面所必需的,而.wxss与.json文件则是可选
的。
注意 微信小程序中的每一个页面的“路径
+页面名”都需要写在app.json的pages中,且pages中
的第一个页面是小程序的首页。
.wxml文件与.wxss文件作为小程序开发框架的一部分,我们在本章后面会详细介绍。
下面分别介绍index页面与logs页面。
index.wxml是页面的结构文件,代码见程序清
单2-4。
程序清单2-4 页面结构index.wxml
size=cover>
{{userInfo.nickName}}
{{motto}}
index.wxml文件中使用了、、这三个组件来搭建页面结构,绑定数据和交
互处理函数。有关页面组件的详细使用可以参考本
书第4章。
index.js是页面的脚本文件,代码见程序清单2-
5。我们在这个文件中监听并处理页面的生命周期
函数~onLoad,获取小程序实例~getApp,声明并处理数据,响应页面交互事件等。
程序清单2-5 页面脚本index.js
index.js
获取应用实例
var app = getApp
Page({
data: {
motto: 'Hello World',userInfo: {}
}, 事件处理函数
bindViewTap: function {
wx.navigateTo({
url: '..logslogs'
})
},onLoad: function {
console.log('onLoad') var that = this
调用应用实例的方法获取全局数据
app.getUserInfo(function(userInfo){
更新数据
that.setData({
userInfo:userInfo
})
})
}
})
从上面的代码我们可以知道,.js文件是页面逻
辑处理层。详细的逻辑层编码请参考本书3.2节。
index.wxss是页面的样式表文件,代码见程序
清单2-6。
程序清单2-6 页面样式index.wxss
index.wxss
.userinfo {
display: flex;
flex-direction: column;
align-items: center;
}
.userinfo-avatar {
width: 128rpx;
height: 128rpx;
margin: 20rpx;
border-radius: 50%;
}.userinfo-nickname {
color: aaa;
}
.usermotto {
margin-top: 200px;
}
页面的样式表文件是非必要的。当页面有样式
表文件时,文件中的样式规则会层叠覆盖app.wxss
中的样式规则。否则,即使没有页面样式表文件,我们也可以在页面的结构文件中直接使用app.wxss
中指定的样式规则。
index.json是页面的配置文件。页面的配置文件
同样是非必要的,而且只能配置window配置项的属
性值。当页面有配置文件时,文件中的配置项在该
页面上会覆盖app.json的window中相同的配置项。
若没有指定页面的配置文件,则在该页面直接使用
app.json中的默认配置项。更多配置文件编写与解
析,可参考本书3.1节。接下来我们再看看logs页面。logs.wxml是logs
页面的结构文件,代码见程序清单2-7。
程序清单2-7 页面结构logs.wxml
{{index + 1}}. {{log}}
logs页面使用控制标签来组织代码,在上使用控制属性wx:for绑定logs数据,并将logs数据循环展开节点。
注意 上述代码中的并不是一个组
件,它仅仅是一个包装元素,不会在页面中做任何
渲染,只接受控制属性(如wx:for或wx:if)。logs.js是logs页面的脚本文件,代码见程序清单
2-8。
程序清单2-8 页面脚本logs.js
logs.js
var util = require('....utilsutil.js')
Page({
data: {
logs: []
},onLoad: function {
this.setData({
对于logs数组的每个元素使用map方法:即调用匿名回调函数并返回包含结果的数组
logs: (wx.getStorageSync('logs') || []).map(function (log) {
return util.formatTime(new Date(log))
})
})
}
})
上述脚本文件代码中,使用了require来引
入模块化.js脚本文件。关于模块化代码,可参考本
书3.2.3节。2.2 小程序的线程架构与开发步骤
2.2.1 小程序线程架构
通过对小程序项目Hello WXapplet的解析,我
们知道每个小程序包含一个描述整体程序的app实
例和多个描述页面的page。其中app由三个文件构
成:公共配置app.json、公共样式app.wxss、主体逻
辑app.js。每个page最多由四个文件构成:页面配置
page.json、页面结构page.wxml、页面样式
page.wxss、页面主体逻辑page.js。
我们可以按需在app.js和page.js中添加程序在生
命周期的每个阶段相应的事件。比如在页面onLoad
的时候进行数据加载,onShow的时候进行数据的更新。
典型的app.js代码结构如下:
App({
onLaunch: function {
启动时执行的初始化工作
},onShow: function {
小程序启动或从后台进入前台时,触发执行的操作
},onHide: function {
小程序从前台进入后台时,触发执行的操作
},globalConf: {
indexDate:’’,matchDate:’’
},dataCache: {},globalData: 'I am global data'
})
典型的一个页面page.js代码结构:
Page({
Data: {
Text:’This is page data.’
}
onLoad: function(options) {
页面加载时执行的初始化工作
}
onReady: function {
页面就续后触发执行的操作
}, onShow: function {
页面打开时,触发执行的操作
},onHide: function {
页面隐藏时,触发执行的操作
},onUnLoad: function {
页面关闭时触发执行的操作
}, Event handler
viewTap: function {
this.setData({
text:’set some data for updating view.’
})
},})
一个完整的小程序执行的生命周期如图2-4所
示。
图2-4 小程序的生命周期
一个page的生命周期从onLoad事件开始,整个
生命周期内onLoad、onReady、onUnload这三个事件仅执行一次,而onHide和onShow事件在每次页面
隐藏和显示时都会触发。当用户手动触发左上角的
退出箭头时,小程序仅触发app.onHide,下次进入
小程序时会触发app.onShow以及当前
page.onShow。仅当小程序在后台运行超过一定时
间未被唤起、或者用户手动在小程序的控制栏里点
击退出程序、或者小程序内存占用过大被关闭时,小程序将被销毁,会触发app.onUnload事件。
小程序的线程架构示意如图2-5所示。图2-5 小程序线程架构示意图
每个小程序分为2个线程,view与appSer-ver。
其中view线程负责解析渲染页面(wxml和wxss文
件),而appServer线程负责运行js。appSer-ver线程
运行在jsCore中(安卓下运行在X5中,开发工具中
运行在nwjs中)。由于js不跑在WebView里,就不能直接操纵DOM和BOM,这就是小程序没有
window全局变量的原因。2.2.2 小程序开发步骤
理解小程序的线程架构后,我们基本上可以归
纳出一个小程序开发的主要步骤,涉及两大步骤:
1)创建小程序实例(定义、配置及页面执行
关联)。即编写3个app前缀的文件,它们共同描述
了整个小程序主体逻辑、生命周期及页面构成、样
式等。小程序实例将由appServer线程执行。
2)创建页面(编写页面结构与事务处理逻
辑)。在小程序中一个完整的页面(page)是
由.js、.json、.wxml、.wxss这四个文件组成,每个
界面.js和.wxml是必选项,其他两项是可选项。小
程序页面中的.wxss与.wxml文件由view线程执
行,.js文件由appServer线程执行。我们利用组件编写界面(UI)代码,以展现页
面数据或内容视图,这部分代码就保存为页面的
wxml文件:
·微信小程序中的每一个页面的“路径+页面
名”都需要写在app.json文件里名为pages的配置项
中,且pages配置项中的第一个页面是小程序的首
页。
·.wxml文件与.wxss文件是小程序开发框架的一
部分,我们在后面的2.3节详细介绍。2.2.3 为Hello WXapplet添加新页面及示例
代码
我们将为Hello WXapplet小程序添加一个新页
面“demo”,以帮助大家熟悉小程序代码编写步骤。
1)使用微信Web开发者工具,在“编辑”模式
下,鼠标置于pages处,选择“+”号添加“目录”,如
添加一个名为“demo”的目录。如图2-6所示。图2-6 添加目录或文件
2)我们先为demo页面添加一个视图结构文
件,即demo.wxml,操作方法与添加目录类似:在
微信Web开发者工具里,在“编辑”模式下,鼠标置
于pages下的demo目录处,选择“+”号来添加“文
件”,如添加demo.wxml文件,将示例代码中相应的
代码段放入该文件内,并保存。示例的demo.wxml
代码见程序清单2-9。
程序清单2-9 页面结构demo.wxml
demo.wxml
(第2版)
熊普江 谢宇华 编著
ISBN:978-7-111-57306-7
本书纸版由机械工业出版社于2017年出版,电子版
由华章分社(北京华章图文信息有限公司,北京奥
维博世图书发行有限公司)全球范围内制作与发
行。
版权所有,侵权必究
客服热线:+ 86-10-68995265
客服信箱:service@bbbvip.com
官方网址:www.hzmedia.com.cn
新浪微博 @华章数媒 目录
第2版前言
序一
序二
第1版前言
第1章 创建自己的第一个小程序
1.1 准备工作
1.1.1 成为微信公众平台开发者
1.1.2 获取小程序AppID
1.1.3 安装开发者工具包
1.2 创建第一个小程序——Hello WXapplet
1.3 微信Web开发者工具的操作与使用
1.3.1 界面与操作
1.3.2 编辑功能
1.3.3 调试功能1.3.4 项目功能
1.3.5 运行小程序
第2章 小程序初体验
2.1 理解小程序
2.1.1 Hello WXapplet项目目录及文件构成
2.1.2 Hello WXapplet项目的代码实现
2.2 小程序的线程架构与开发步骤
2.2.1 小程序线程架构
2.2.2 小程序开发步骤
2.2.3 为Hello WXapplet添加新页面及示例
代码
2.3 进一步了解小程序开发框架
2.3.1 MINA框架
2.3.2 目录结构
2.3.3 逻辑层2.3.4 视图层
2.3.5 数据层
2.4 小程序的发布与使用
2.4.1 小程序预览、上传、审核与发布
2.4.2 小程序加载运行
2.5 深入理解小程序的应用场景
2.5.1 小程序入口与界面
2.5.2 小程序与HTML 5应用开发的差异
2.5.3 小程序的最佳应用场景
2.5.4 小程序对企业、开发者的意义与影响
2.5.5 开发者角色与技能要求
2.5.6 小程序的能与不能
第3章 小程序开发基础
3.1 配置
3.1.1 全局配置~app.json3.1.2 页面配置~page.json
3.2 逻辑层
3.2.1 注册程序~App方法
3.2.2 注册页面~Page方法
3.2.3 模块及调用
3.2.4 微信原生API
3.3 视图层
3.3.1 WXML详解
3.3.2 WXSS详解
3.3.3 框架组件
第4章 框架组件的开发应用
4.1 视图容器组件
4.1.1 view
4.1.2 scroll-view
4.1.3 swiper4.1.4 swiper-item
4.2 基础内容组件
4.2.1 icon
4.2.2 text
4.2.3 progress
4.3 表单组件
4.3.1 button
4.3.2 checkbox-group
4.3.3 checkbox
4.3.4 form
4.3.5 input
4.3.6 label
4.3.7 picker
4.3.8 picker-view
4.3.9 radio-group4.3.10 slider
4.3.11 switch
4.3.12 textarea
4.4 互动操作组件
4.4.1 action-sheet
4.4.2 modal
4.4.3 toast
4.4.4 loading
4.5 页面导航组件
4.6 媒体组件
4.6.1 image
4.6.2 audio
4.6.3 video
4.7 地图组件
4.8 画布组件4.9 WXML组件与HTML的差异
第5章 API接口的开发应用
5.1 网络API
5.2 媒体API
5.2.1 图片API
5.2.2 录音API
5.2.3 音频播放控制API
5.2.4 音乐播放控制API
5.2.5 视频API
5.3 文件API
5.4 数据缓存API
5.5 位置API
5.6 设备信息API
5.7 界面API
5.7.1 交互反馈API5.7.2 页面导航API
5.7.3 动画API
5.7.4 绘图API
5.7.5 其他API
5.8 开放API
5.8.1 登录API
5.8.2 用户信息API
5.8.3 微信支付API
5.8.4 模板消息API
5.8.5 客服消息API
5.8.6 分享API
5.8.7 获取二维码API
第6章 小程序开发纲要
6.1 界面
6.2 网络6.3 本地数据及缓存
6.4 设备硬件
6.5 微信开放接口
6.6 媒体
6.7 后端开发与设计
第7章 小程序经典案例
7.1 文件上传与下载——小相册
7.1.1 功能详解
7.1.2 程序结构
7.1.3 程序细化
7.1.4 程序体验
7.2 流媒体转码与播放——视频点播
7.2.1 功能详解
7.2.2 程序目录结构
7.2.3 程序细化7.3 互动——高冷机器人
7.3.1 功能详解
7.3.2 程序目录结构
7.3.3 程序细化
7.4 LBS应用——周边信息点
7.4.1 功能详解
7.4.2 程序结构
7.4.3 程序细化
7.5 WebSocket高级应用——远程控制设备
7.5.1 应用场景
7.5.2 开发实现
7.5.3 案例总结
7.6 扫码应用——微投票
7.6.1 功能详解
7.6.2 程序结构7.6.3 程序细化
第8章 小程序优化与演进
8.1 为什么选择小程序,而不是公众号或App
8.2 未来演进方向探讨
8.3 小程序持续优化方法
附录A 微信小程序平台运营规范
附录B 微信小程序平台常见拒绝情形
附录C 沟通联络方法第2版前言
小程序是微信团队打造的“连接一切”的新事
物、新能力。因此,本书第1版的首要原则是:及
时。其中我们介绍了小程序的框架、开发方法与应
用案例,希望让广大移动互联网爱好者能在第一时
间对小程序的开发有相对全面的认识,并着手开发
自己的小程序。
但也正因为微信小程序是个新生事物,自其
2017年1月9日正式上线以来,得到广大开发者的好
评,提出了更多场景与能力的诉求,微信团队响应
得非常迅速,在短短的几个月时间内,又为小程序
开放了更多的新能力。这些新能力包括但不限于:
·开放个人开发者申请。·公众号自定义菜单可打开小程序。
·公众号模板小程序可打开小程序。
·公众号绑定小程序时可选择给粉丝群发通
知,粉丝点击通知消息即可进入小程序。
·兼容线下二维码,原有二维码也能进入小程
序(参考摩拜单车)。
·App分享链接到微信,可用小程序打开。
·小程序提供蓝牙相关API,可连接硬件。
·小程序和微信卡券结合,在小程序中就可领
取会员卡和优惠券。
·支持长按识别二维码进入小程序。·开放第三方平台,可以把小程序交给第三方
开发或管理。
·推出了新的小程序二维码,小程序二维码不
再是枯燥的方形。
·公众号可关联不同主体的小程序了,一个公
众号最多可关联13个小程序。
·公众号文章支持添加小程序卡片,点击卡片
即可进入小程序。
·小程序之间可以相互跳转了,在小程序中长
按识别小程序码即可跳转到其他小程序。
·小程序的大小升级为2MB。
·……因此,我们有必要及时更新内容,以确保读者
可以利用本书开发内容更丰富、功能更强大的小程
序。
同时,我们响应读者的诉求,在第2版中扩展
了新的应用案例,使得内容更加丰富与实用,更易
实践。
另外,我们还为本书的应用案例提供了源代码
下载地址,便于读者使用。下载地址
为:http:www.5iops.comsample.zip
小程序正在让“连接一切”的移动互联网生态成
为现实,未来将无限可能。
作者2017年5月序一
不管是美国的工业互联网,还是中国的互联网
+,这些都表明互联网正在催生新一轮的产业革
命。移动App在不断地连接“人”,创造一个个新的
基于人的应用场景;物联传感器在不断地连
接“物”,也在创造一个个新的基于物的应用场景。
连接带来了大的并发量和数据量,从而又促使了云
计算和大数据这种分布式计算方式和数据处理方式
的普及。“云大移物”为代表的新一代信息技术是当
今互联网技术的核心,它们正在形成一种新的体
系。正如时任工业和信息化部副部长杨学山先生在
中国新一代IT产业推进联盟成立仪式上用“五个
新”做的精辟总结:信息技术正在形成新的体系结
构(新体系);新的技术体系形成了新的能力(新能力);在新的能力支撑下正在形成许多新的应用
模式(新模式);新的应用模式正在导致新的竞争
格局(新格局);新体系、新能力、新模式和新格
局一起在推动人类社会迈入新的发展阶段(新阶
段)。
在新的互联网时代,企业级IT应用正在面临颠
覆性的变革:从单机架构走向分布式架构,从瀑布
式开发走向迭代式开发,从大模块走向微服务,从
大项目交付走向持续交付。这一切都需要企业IT开
发与应用的模式要适应互联网环境下敏捷开发、快
速迭代和弹性扩展的需求。可以说,企业级IT应用
已经到了一个不得不换代的关键时期。在新的互联
网基础设施平台上,进行原生云应用的开发,已是
企业IT的必然选择。微信确实是一个伟大的产品,它不仅成为我们
每一个人日常沟通交流的工具,也成为了整个社会
的信息基础设施。在国内,由于微信几乎在实时连
接每一个人,它自然也成了一个最强大的“入口”。
公众号、服务号和企业号的诞生已经让微信在开始
连接后端的企业系统,但是这些后端的系统还可能
是过去那些笨重的遗留系统。如何真正实现互联网
化的即连即用,或许应用号才开始真正打开一个企
业级的应用市场,我们正翘首以待。业界一直有一
个说法:“企业级应用太重,很难互联网化”,然而
我一直不以为然。企业架构(Enterprise
Architecture)之父Zachman告诉我们,复杂的复合
件应该是建立在简单的原子件组装基础上。没有良
好的架构设计,系统会有大量的重复开发和重叠,复杂性也会随着需求的增加而指数级增长,到一定时候不得不推倒重来。今天的大多数企业信息化还
处于这种手工作坊式的“复杂”漩涡中。大道至简,但“简”需要好的架构设计。但愿企业号的“小程
序”和“巧应用”能为我们下一代信息化打开一扇新
的窗户。
熊普江和谢宇华分别是我们第二届和第三届互
联网CIO-CTO班学员。特别是普江,他本人是腾讯
的架构师,对互联网架构有深刻的认识,对腾讯的
所有产品都有足够的了解。我很高兴能为他们俩的
这本书作序!可以说,《小程序,巧应用》这本书
是这个时代的及时雨,它不仅仅告诉我们应用号小
程序的开发和使用,也为我们下一代信息化模式转
型做了一个非常好的铺垫。
姚乐,CIO时代学院院长2016年11月28日序二
“触手可及、用完即走”,作为用户当然会期待
这样的应用产品。微信小程序正是这样的产品,它
面对月活超过8亿用户的微信生态,为服务开发者
推出了一个方便快捷地连接用户的开发平台。
从小程序对外发布内测,我身边就有很多人在
关注。当时我创办的1024学院也计划邀请微信的专
家来上公开课,为此我还联系了本书作者普江,他
当时说公测期,内部人士不好对外发声,正式上线
后可以安排。
没有想到普江自己藏着大招,从内测开始到现
在不到两个月,便给我传了一份书稿,让我写序。认识普江很多年,知道他不仅是技术专家,也
是热心公益、乐于分享助人的好朋友。就如他自己
所言,因为太多的朋友找到他问,促使他开始准备
这本书,普江的初心还是要帮助朋友,帮助小程序
的开发者。
这本书可能是第一本微信小程序的实战类书
籍。感谢普江、宇华两个作者夜以继日的辛苦努
力,能让广大开发者在第一时间拿到详实的开发指
南和参考资料。
我们也很期待在微信生态里出现一批高质量的
微信小程序,为用户提供更多、更好、更便捷的服
务。
——吴华鹏,iTechClub(互联网精英俱乐部)理事长,1024学院创始人第1版前言
随着移动互联网的兴起,互联网作为一种信息
技术在传统社会与传统工业中发挥的作用越来越强
大,互联网与整个社会运作正在加速深度融
合。“互联网+”的趋势显而易见,政府、社会组
织、企业以及个人,都对移动互联网时代的融合或
转型充满期待而又心怀忐忑:移动化的场景如何结
合?是否有足够的移动应用开发能力?即便场景与
能力都满足,是否能应对获取用户成本、打开频率
等移动互联网运营的巨大挑战?
好在我们有微信!这是一款为移动时代而生,让世界互联网震惊的中国创新应用。经过5年多的
发展,微信已有超过8亿月活用户且仍在不断进化与演进,是移动时代当之无愧的超级App王。更加
幸运的是,腾讯的微信团队源源不断地将微信的能
力开放出来,为我们提供了融合与转型的超强连接
力。
2016年1月在广州举办的微信公开课上,“微信
之父”张小龙在他演讲的最后一部分,宣布将推
出“应用号”。小龙提到:“我自己当了多年程序
员,我觉得我们应该为开发团体做一些事情。”至
于“应用号”的样子,小龙当时的大概表述是“类似
于公众号,但比公众号更便捷、更好找,有更容易
使用的形态”。这就是微信小程序的由来。
历时8个多月,在2016年9月21日,微信小程序
公布开启“内测”。随即这个内测消息便刷爆了朋友
圈,我在接下来的数天内便接到不下30个“求内测邀请码”需求留言,小程序火爆程度可见一斑。由
于微信团队首批仅开放了200个内测号,物以稀为
贵,网络上不久就有传言:转让某个带小程序功能
的微信号,账号有30.7万女粉丝,起拍价300万。
2016年11月3日,小程序正式开放公测。我再
次在朋友圈刷屏中体验到了“小程序”的火爆,感受
到了开发者、企业以及市场对微信小程序的好奇、疑惑,同时也感受到大家在移动浪潮中拥抱变化的
期待。
微信官方页面指出:“小程序可以在微信内便
捷地获取和传播,同时具有出色的使用体验。”张
小龙在小程序内测首发当天,也在朋友圈给出了解
释:小程序是一种不需要下载安装即可使用的应
用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开。这也体现了“用完即走”的理
念,用户无须担心安装应用过多的问题。应用将无
处不在,随时可用,但又无须安装卸载。
移动互联网时代的微信应用不可或缺,微信小
程序切合了时代需要,毫无疑问会成为政府、组织
机构、企业以及开发者必争的互联网应用场景。微
信小程序必将再一次扩展微信强大的“连接力”,帮
助我们解决现有服务痛点,或者发掘、衍生出新的
商业模式,帮助行业、企业以及政府机构改善服务
或实现“互联网+”转型。
感谢微信团队,为我们带来微信小程序这个新
生事物。绝大部分场景下,不用单独开发App的时
代来临了。那么如何开发小程序?如何将现有的服
务或场景与小程序结合?由于小程序是新生事物,基本上多数人都无经
验可言。与小龙一样,我觉得此时有必要为所有对
小程序感兴趣、有期待的朋友,提供一些有关小程
序开发的指南,这是一件非常有意义的事情。
由于我在工作上与微信团队联系紧密,沟通频
繁,有近水楼台优势;而且对腾讯业务有相对全面
的了解,熟悉丰富的应用场景,学习了大量小程序
项目案例。
自小程序内测开启以来,我们更是夜以继日,同步研读与理解微信团队的文档,梳理开发逻辑,测试各个场景案例,希望尽早奉献给大家一本从入
门到精通的小程序开发大全。
我们尝试通过本书将我们的先发优势发挥出来。由小程序的框架、语法、函数及API开始,结
合丰富实用的案例,帮助大家熟练掌握小程序的开
发与应用,并探讨小程序的适用范围以及未来优化
演进的方向。
本书读者对象包括:
·前端开发工程师
·微信应用开发者
·移动开发爱好者
·计算机相关专业的学生
如何阅读这本书
作为“开放连接体系”的一环,微信团队为小程序提供连接标准与规范,最大限度地降低了开发门
槛,但开发小程序还是需要一定的“专业开发能
力”与程序开发的理解力。
微信小程序的开发是基于框架的。因此,开发
者首先要理解“框架”(framework)的概念。
从软件设计角度,框架是一个可复用的软件架
构解决方案。框架规定了应用的体系结构,阐明软
件体系结构中各层次间及其层次内部各组件间的依
赖关系、责任分配和控制流程,框架表现为一组接
口、抽象类以及实例间协作的方法。
框架一般是成熟、稳健的,可以处理系统中很
多的细节问题,比如,事物处理、安全性、数据流
控制等问题。框架一般都为多人所用,所以结构很好,扩展性也很好,而且它是不断升级的,可以直
接享受别人升级代码带来的好处。
显然,框架极大地方便了开发者,减少了开发
代码量并提升了代码质量。
微信团队为小程序提供的开发框架为MINA框
架,它类似于淘宝Weex、Vue框架。MINA框架经
过大量底层的优化设计,有着接近原生App的运行
速度,对Android端和iOS端做到了高度一致的呈
现,具有完备的开发和调试工具。
微信团队为小程序的开发者提供了包含UI界
面、社交与支付、语音、多媒体、LBS服务、手机
硬件、网络传输等基础能力。功能丰富且实用,可
以覆盖绝大部分移动应用的场景需求。基于对框架的理解与小程序能力及开发过程,我们将本书基本内容划分为五大块:
·创建一个小程序项目并解析体验:由零开始
创建一个小程序,全面体验小程序的开发工具、小
程序界面、开发框架、实现过程及代码解析,了解
小程序的应用场景及开发要求。这部分内容非常适
合对小程序开发感兴趣的初学者。
·小程序开发基础指南:按框架构成,阐述小
程序开发的语言与语法、函数方法、模块及事件交
互等。这部分内容对小程序开发者而言,是必须掌
握的部分。
·组件开发应用指南:详细阐述使用组件进行
页面视图的开发过程与组件应用技巧,熟练掌握组件的使用,将大大提高小程序开发的效率。
·API接口开发应用指南:微信强大的基础能力
均通过API接口开放出来,它为小程序实现强大功
能及适配各种应用场景提供了可能。这一部分内容
阐述如何使用各个微信原生API接口进行小程序开
发,可帮助开发者创建出功能强大且极具原生体验
的小程序应用。
·小程序经典案例:通过几个应用场景的案
例,让读者实践小程序的各项功能并掌握一些应用
技巧。
本书力图帮助读者充分理解小程序的功能、开
发过程,由浅入深,使读者快速掌握小程序项目的
开发。相信读者通过学习本书,一定可以尝试简单、高效地搭建具有原生App体验的小程序应用或
服务。
致谢
在写作本书的过程中,得到了很多同行、同事
以及朋友的鼓励,在此衷心感谢。也感谢华章公司
编辑们的努力,感谢家人的支持与理解。
场景代表未来,每一个对应现实需要的服务场
景或实用功能的小程序,通过微信的连接与巧妙应
用,汇聚起来,最终成为改变世界的力量。
我们相信:小程序,巧应用,可以成就大梦
想。
现在,我们邀请所有对移动互联网服务与应用感兴趣的朋友,都来开发微信小程序。
作者
2016年12月第1章 创建自己的第一个小程序
学习计算机语言,一般会最先接触“Hello
World!”程序。与之类似,要掌握微信小程序的开
发,我们也先来创建自己的第一个小程序实例。1.1 准备工作
微信小程序是继订阅号、服务号、企业号之
后,微信公众平台上全新的一种连接用户与服务的
方式。
开始创建之前,我们需要做些准备工作,包括
工作账号及项目ID获取,开发环境要求与搭建等,这也是开发小程序必备的前提工作。1.1.1 成为微信公众平台开发者
成为微信公众平台的开发者,是小程序开发的
首要条件。只有成为微信公众平台开发者,才可以
使用公众平台的各种开发接口。如果你已经是开发
者,则可以跳过本节。
一般来讲,开发者的微信号就是小程序的开发
者ID。要注意的是:微信号可以独立存在,而开发
者ID不能独立存在,它必然要绑定于某个公众平台
服务项目,如公众号或小程序。因此,若要成为开
发者,还需要有公众平台服务(订阅号、服务号、企业号、小程序)账号或归属于某个公众平台服务
的开发者。如果还没有公众平台小程序服务账号,需要先注册,注册入口为:https:mp.weixin.qq.com,点击首页右上角“立
即注册”进行注册。经过以下步骤完成小程序服务
账号注册:
1)填写账号信息。
2)邮箱激活。
3)信息登记。
注意 目前小程序项目不仅开放给企业、政府、媒体及其他组织,也已支持个人开发者注
册,但对个人开发者所支持的开发类目与API能力
相对较少或受限,如暂不支持电子商务与网上超市
等类目,暂不支持个人认证、支付与卡券等API。
完成注册后,可以登录公众平台(网址为https:mp.weixin.qq.com)并完善微信小程序信
息(如小程序名称、头像、小程序介绍、服务范围
等)。
然后我们就可以绑定开发者了。登录后进
入“用户身份”页面,选择“开发者”进行绑定,如图
1-1和图1-2所示。
图1-1 用户身份管理图1-2 绑定开发者
注意 已认证的小程序最多可以绑定20名
开发者。未认证的小程序最多可以绑定10名开发
者。由于个人不能注册小程序账号,但这并不意味
着个人不能进行小程序开发,这时可以通过已有的
订阅号(或新注册的订阅号)开发小程序。步骤如
下:
1)使用订阅号账号,登录公众平台(用电脑
在https:mp.weixin.qq.com中登录),在左边菜单
中,选择“开发”→“基本配置”,点击“开通”,成为
开发者。
2)在左边菜单中,选择“开发”→“开发者工
具”→在页中点选“Web开发者工具”的“进入”,点
选“绑定开发者微信号”,如图1-3所示。成功后可以
看到个人头像;如图1-4所示。之后,开发者微信
号可在Web开发者工具中进行公众号或小程序的开
发与调试。图1-3 开发者管理
图1-4 绑定开发者微信号
注意 绑定后,开发者手机的微信里会收
到一条消息,需要接受邀请,才能成为真正的开发者。1.1.2 获取小程序AppID
成功注册小程序账号后,会有唯一的AppID。
登录https:mp.weixin.qq.com,在页面左边的菜单
中,点选“设置”→“开发设置”,可查看到微信小程
序的AppID,如图1-5所示。
注意 这里不可使用公众号(服务号或订
阅号)的AppID。没有AppID也可以进行小程序开
发练习,只是部分功能受限,且不能上传发布。图1-5 开发者设置
要在手机上体验此AppID的小程序,默认只有
公众平台小程序账号的管理员微信号可以;其他微
信号还需要进行“绑定开发者”的操作。即在“用户
身份”-“开发者”模块中,绑定需要体验该小程序的
微信号。1.1.3 安装开发者工具包
作为开发者,需要有开发环境。这里需要下载
安装开发者工具包。截止于2017年5月9日,微信团
队提供的开发者工具包版本为0.17.170900,有
Windows 32位、Windows 64位及Mac三种版本。官
方下载地址
为:https:mp.weixin.qq.comdebugwxadocdevdevtoolsdownload.html
成功下载适当的版本后,在开发者的电脑上进行安
装。下面以Windows 64位安装包为例,描述安装过
程。
双击下载的安装包,将出现安装向导,如图1-
6所示。
点击“下一步”,完成开发者工具包的安装,如图1-7所示。
运行“微信Web开发者工具”,将会要求开发者
使用手机微信扫码登录,如图1-8所示。
图1-6 安装向导之一图1-7 安装向导之二图1-8 微信Web开发者工具启动界面
至此,我们创建第一个小程序所需的准备工作
全部完成。1.2 创建第一个小程序——Hello
WXapplet
事不宜迟,我们马上开始创建第一个微信小程
序——Hello WXapplet。
在安装开发者工具的电脑上运行“微信Web开
发者工具”,通过开发者的微信扫码进入后,即可
得到如图1-9所示的界面。图1-9 添加小程序项目
点击“添加项目”,填入前面我们获得的
AppID(无AppID可以忽略),并输入项目名
称“Hello WXapplet”,选定本地文件夹作为“项目目
录”,如图1-10所示。图1-10 指定项目名称
勾选“在当前目录中创建quick start项目”后,点
击“添加项目”按钮,即已成功创建了我们的第一个
微信小程序项目——Hello WXapplet。
Hello WXapplet项目创建成功后,即进入并看
到完整的开发者工具界面。我们创建的HelloWXapplet这个小程序只包含两个页面:首页及信息
页,实现一些简单的功能。其中,首页显示当前登
录的微信号头像及昵称。点击首页,则进入信息
页,可以查看到小程序启动的日志信息。我们将在
第2章中全面解析Hello WXapplet这个项目的代码。
在进行Hello WXapplet小程序项目代码介绍之
前,我们需要熟悉一下微信Web开发者工具的操
作。1.3 微信Web开发者工具的操作与使
用
“工欲善其事,必先利其器”。熟悉开发者工具
界面与操作,将为我们今后的开发带来极大的便
利。1.3.1 界面与操作
微信开发者工具功能非常强大与便捷,集成了
开发调试、代码编辑及程序发布等功能。主界面如
图1-11所示。
图1-11 微信开发者工具-主界面
开发者工具界面基本划分为四大区域:1区“顶部菜单”,2区“导航菜单”,3区“目录文件模拟运
行”,4区“编辑调试开发”。1区与2区是固定的。3
区与4区会依据选择导航菜单区的不同功能或模式
有所不同。
1区“顶部菜单”最为简单,开发者使用到的机
会也不多。“设置”是配置开发机运行程序时如何连
接网络(见图1-12)。“动作”是指“刷新”“后退”“前
进”等操作,主要在网页或界面调试时使用。“帮
助”则是本Web开发者工具的版本与版权声明等信
息。图1-12 微信开发者工具-设置
2区“导航菜单”是开发者经常切换使用的功能
区。特别是其中的“编辑”与“调试”功能将是开发者
使用最多的重要功能。下面重点介绍这两个功能。1.3.2 编辑功能
我们先来看其中的“编辑”功能。点击“编辑”后
出现的界面如图1-13所示。
原来的3区部分就变成了项目的目录与文件列
表区,4区部分则变成了对应所选文件的代码编辑
区,我们也称之为代码编辑器。
微信开发者工具提供的代码编辑器,可以对当
前项目对应文件进行编码工作,同时也可以对文件
进行基本的添加、删除及重命名操作。
代码编辑器现在支持4种文件的编辑:wxml、wxss、js以及json文件。当然编辑器支持了较为完
善的自动补全功能,大大方便了开发者。代码编辑器还支持快捷键操作,而且快捷键功
能与行为基本保持与其他编辑器一致。比如光标相
关快捷键操作如下:
图1-13 微信开发者工具-编辑
·Ctrl+End:移动到文件结尾。
·Ctrl+Home:移动到文件开头。·Ctrl+i:选中当前行。
·Shift+End:选择从光标到行尾。
·Shift+Home:选择从行首到光标处。
·Ctrl+Shift+L:选中所有匹配。
·Ctrl+D:选中匹配。
·Ctrl+U:光标回退。
再比如,格式调整的快捷操作如下:
·Ctrl+S:保存文件。
·Ctrl+[,Ctrl+]:代码行缩进。
·Ctrl+Shift+[,Ctrl+Shift+]:折叠打开代码块。·Ctrl+C,Ctrl+V:复制粘贴,如果没有选中任
何文字则复制粘贴一行。
·Shift+Alt+F:代码格式化。
·Alt+Up,Alt+Down:上下移动一行。
·Shift+Alt+Up,Shift+Alt+Down:向上向下复
制一行。
·Ctrl+Shift+Enter:在当前行上方插入一行。
快捷键可以说是程序开发者的至爱,编辑器也
支持自定义快捷键。关于如何自定义快捷键,可参
考下节“调试”功能中的“快捷键设置项”。1.3.3 调试功能
我们再来看导航菜单区的“调试”功能,这是开
发者检测代码结果实现与排查问题的核心工具,界
面如图1-14所示。
图1-14 微信开发者工具-调试
我们看到,这时3区变成了“模拟器”,4区变成
了调试工具与输出区。模拟器将如实地模拟微信小程序项目在客户端
的逻辑与操作表现,绝大部分的功能与API调用均
能在模拟器上正确呈现。
调试工具与输出区的顶部是一行菜单,分别
是:Console、Sources、Network、Storage、AppData、Wxml,最右边的扩展菜单项是定制与控
制开发工具钮“ ”。下面我们一一进行简单介绍。
注意 本章节涉及的代码及含义,读者若
不理解也不需要在意,在这里主要了解菜单的功能
与操作即可。
Console页:控制台信息页,它有两个作用:
1)开发者直接在此输入代码并调试,如图1-
15所示。图1-15 Console页调试
2)显示小程序的错误输出,如图1-16所示。
图1-16 Console页输出错误提示
Sources页:源文件调试信息页,用于显示当前
项目的脚本文件,如图1-17所示。注意 因为小程序框架会对脚本文件进行
编译工作,在源文件页面中我们看到的文件其实是
经过处理之后的脚本文件,所以我们编写的代码都
被包含在define函数中。对于页面(page)的代
码,则在打包脚本文件尾部,require函数会完成主
动调用动作。
Network页:网络调试信息页,用于观察和显
示每个元素请求信息和套接字(socket)状态等网
络相关的详细信息,如图1-18所示。
Storage页:数据存储信息页,用于显示当前项
目使用存储API(wx.setStorage或
wx.setStorageSync)接口的数据存储情况。比如,我们在Console中输入:
wx.setStorage({key:name,data:Roeyxiong}),则在Storage页面中就可以
看到我们存储了一个Key-Value数据,如图1-19所
示。
图1-17 Sources页图1-18 Network页
AppData页:用于调试显示当前小程序项目此
时此刻的应用具体数据,实时地回显项目数据调整
情况。即我们可在此处编辑修改数据,反馈到当前
界面上去。比如,我们将“Hello World”这个字,改
为“Hello WXApplet”,界面上马上就显示出相应的
效果,如图1-20所示。图1-19 Storage页
图1-20 AppData页注意 这里的调试修改并不会保存到代码
中。
Wxml页:用于帮助开发者调试WXML转化后
的界面。通过这里的调试可以看到真实的页面结构
及对应的WXSS属性,同时可通过修改对应的
WXSS属性,在模拟器中即时查看修改后的情形。
并且,可以通过调试区左上角的选择器 ,快速
地找到页面中组件所对应的WXML代码,如图1-21
所示。
例如,我们先点击①定位,在模拟器中选择定
位点②,快速定位到WXML代码段③。然后我们可
以在最右边的样式④中进行修改调配,并立即查看
效果。图1-21 Wxml页
最右边的扩展菜单项——定制与控制开发工具
钮“ ”,主要包括开发工具的一些定制与设置,如“Show Console”(显示控制台页),“Search all
files”(查找文件),“Shotcuts”(快捷键自定义或
配置),“Settings”(开发者工具的环境参数设定,包括喜好Preferences,工作区域Workspace、黑箱
Blackboxing,支持模拟的手机设备型号Devices,网络带宽及时延限制Throttling等),“Help”(帮
助)以及“More tools”(更多工具)。这些工具包
括:Inspect devices(检测设备)、Network
conditions(网络条件)、Rendering settings(渲染
设定)、Sensors(重力传感器)。这里不展开叙
述,如图1-22所示。
图1-22 微信开发者工具-定制化配置1.3.4 项目功能
导航菜单区的“项目”功能,用来显示当前项目
的细节,包括图标、AppID以及目录信息等。同
时,提供了小程序发布功能(上传)与手机预览功
能(预览)。
我们点击“预览”,开发者工具会将项目代码进
行编译与构建,生成代码包上传到微信服务器,如
图1-23所示。成功后会显示一个二维码,这样开发
者就可以用手机微信扫描它,并在手机上看到小程
序项目的真实表现。图1-23 微信开发者工具-项目1.3.5 运行小程序
1.调试预览
开发者可以在微信开发者工具中点击左侧导
航“调试”功能,以便在模拟器中运行小程序,查看
小程序运行效果。
2.手机预览
开发者也可以将小程序上传到微信小程序平台
中,让用户或测试与开发人员通过手机微信客户端
来扫码,以装载小程序,并在微信客户端环境下运
行。
3.开发者手机预览在开发者工具左侧菜单栏中选择“项目”,点
击“预览”,扫码后即可在微信客户端中体验,如图
1-24所示。
图1-24 预览小程序第2章 小程序初体验
上一章我们成功地创建了第一个示例小程序
——Hello WXapplet。本章通过解析这个小程序项
目,使大家尽可能对小程序有个全局的认知,包括
小程序的框架、目录结构、开发步骤以及入口界
面、示例代码的使用与运行等。2.1 理解小程序
对于用户而言,小程序的直观表现只是多个相
互关联的页面。我们的小程序Hello WXapplet也一
样,它由2个相互关联的页面构成:首页(index)
与信息页(logs)。点击首页的头像就切换到信息
页,在信息页点击“返回”可以再返回到首页,如图
2-1所示。图2-1 两个相互关联的页面
小程序的开发实际上就是实现这些页面的展示
(视图),以及实现“页面上用户交互事件”、“页
面间切换逻辑”、“数据存储及网络调用”等事务与
逻辑处理的过程。2.1.1 Hello WXapplet项目目录及文件构成
我们先从文件目录结构上来了解Hello
WXapplet项目的构成。点击开发者工具左侧导航
的“编辑”,我们可以看到Hello WXapplet项目的目
录结构及包含文件如图2-2所示。图2-2 Hello WXapplet项目的目录结构
目录结构显示:小程序项目在创建时的目录
(示例的本地开发目录为:“D:\小程序巧应用”)
之下,包含3个app开头的文件(app.js、app.json、app.wxss)以及pages目录与utils目录。其中pages目
录存放2个页面(index与logs)的构成文件。从示
例中,我们看到:每个页面都是一个目录,目录名
就是唯一的页面名,其下再由以页面名为前缀的
2~4个文件组成。
对小程序的目录文件结构,我们可以归纳一
下,如图2-3所示。图2-3 小程序的目录文件结构
左侧3个app文件必须放在小程序根目录下,其
他文件则由开发者自由控制。这3个文件说明如
下:
·app.js是小程序的脚本代码,用来监听并处理
小程序的生命周期函数、声明全局变量。
·app.json是对整个小程序的全局配置,配置小
程序是由哪些页面组成,配置小程序的窗口背景色
等。·app.wxss是整个小程序的公共样式表。
其中app.js和app.json是必需的。
小程序页面是由同路径下同名但不同后缀的
2~4个文件组成:
·.js后缀的文件是页面脚本文件,该文件实现页
面逻辑与事件处理。
·.json后缀的文件是页面配置文件。
·.wxss后缀的是页面样式表文件。
·.wxml后缀的文件是页面结构文件,该文件
与.wxss文件一起构建出页面。
其中.js与.wxml文件是必需的。2.1.2 Hello WXapplet项目的代码实现
我们再从代码层面了解Hello WXapplet项目的
实现,根据小程序的目录结构,代码实现有两大部
分——小程序实例与页面,下面分别介绍。
1.小程序实例的代码实现
在Web开发者工具的“编辑”模式下,我们来看
Hello WXapplet这个项目里的代码文件,最关键也
必不可少的是app.js、app.json、app.wxss这三个文
件,分别代表脚本文件、配置文件、样式表文件。
微信小程序运行时会读取这些文件,并生成小程序
实例。
app.js是小程序的脚本代码,我们一般在这个文件中监听并处理小程序的生命周期函数、声明全
局变量、调用框架提供的丰富的API等。如本例
app.js文件中,我们调用了的同步存储及同步读取
本地数据的API——wx.setStorageSync及
wx.getStorageSync。代码见程序清单2-1。想了
解更多可用API,可参考本书第5章“API接口的开发
应用”。
程序清单2-1 小程序app.js
app.js
App({
onLaunch: function {
调用API从本地缓存中获取数据
定义一个数组变量logs
var logs = wx.getStorageSync('logs') || []
在数组logs的集合开头插入一个元素,值为当前时间
logs.unshift(Date.now)
将数组logs写入本地名为logs缓存块中
wx.setStorageSync('logs', logs)
}, 定义一个后面index.js中会调用到的函数,参数cb意为callback,即回调函数
getUserInfo:function(cb){
var that = this;
if(this.globalData.userInfo){
判断cb是否存在且为function类型,若是则传进参数调用cb
typeof cb == function cb(this.globalData.userInfo) }else{
调用登录接口
wx.login({
success: function {
wx.getUserInfo({
success: function (res) {
that.globalData.userInfo = res.userInfo;
typeof cb == function cb(that.globalData.userInfo)
}
})
}
});
}
},globalData:{
userInfo:null
}
})
注意 没有编程基础的读者很容易被上述
代码中的“回调函数”打蒙圈,这种情况建议先百度
或Google了解一下“回调函数”的概念。
app.json配置文件是对整个小程序的全局配
置,代码见程序清单2-2。开发者将在这个文件中
配置小程序是由哪些页面组成、配置小程序的窗口
背景色、配置导航条样式、配置默认标题等。注意 app.json不可添加任何注释。
更多关于小程序的全局配置项可参考本书3.1
节。
程序清单2-2 小程序app.json
{
pages:[
pagesindexindex,pageslogslogs
],window:{
backgroundTextStyle:light,navigationBarBackgroundColor: fff,navigationBarTitleText: WeChat,navigationBarTextStyle:black
}
}
app.wxss样式表文件是整个小程序的公共样式
表,代码见程序清单2-3。我们可以在页面“组件”的
class属性上直接使用app.wxss中声明的样式规则。
关于.wxss文件中的样式规则可参考本书3.3.2节“wxss详解”。
程序清单2-3 小程序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;
}
app.wxss文件中上述程序代码定义了一个名为
container的样式。
2.小程序页面的代码实现
在我们创建的Hello WXapplet小程序项目中,包含两个页面——index页面和logs页面,即首页和
小程序启动日志的展示信息页,它们都在pages目录下。
每一个小程序页面可由同路径下同名的2~4个
不同后缀文件组成,如:Hello WXapplet小程序的
index页面就由pages目录下index路径中index.js、index.wxml、index.wxss、index.json四个文件组
成,它们分别是页面脚本文件、页面结构文件、页
面样式表文件、页面配置文件。其中,.wxml与.js
文件是页面所必需的,而.wxss与.json文件则是可选
的。
注意 微信小程序中的每一个页面的“路径
+页面名”都需要写在app.json的pages中,且pages中
的第一个页面是小程序的首页。
.wxml文件与.wxss文件作为小程序开发框架的一部分,我们在本章后面会详细介绍。
下面分别介绍index页面与logs页面。
index.wxml是页面的结构文件,代码见程序清
单2-4。
程序清单2-4 页面结构index.wxml
size=cover>
index.wxml文件中使用了
互处理函数。有关页面组件的详细使用可以参考本
书第4章。
index.js是页面的脚本文件,代码见程序清单2-
5。我们在这个文件中监听并处理页面的生命周期
函数~onLoad,获取小程序实例~getApp,声明并处理数据,响应页面交互事件等。
程序清单2-5 页面脚本index.js
index.js
获取应用实例
var app = getApp
Page({
data: {
motto: 'Hello World',userInfo: {}
}, 事件处理函数
bindViewTap: function {
wx.navigateTo({
url: '..logslogs'
})
},onLoad: function {
console.log('onLoad') var that = this
调用应用实例的方法获取全局数据
app.getUserInfo(function(userInfo){
更新数据
that.setData({
userInfo:userInfo
})
})
}
})
从上面的代码我们可以知道,.js文件是页面逻
辑处理层。详细的逻辑层编码请参考本书3.2节。
index.wxss是页面的样式表文件,代码见程序
清单2-6。
程序清单2-6 页面样式index.wxss
index.wxss
.userinfo {
display: flex;
flex-direction: column;
align-items: center;
}
.userinfo-avatar {
width: 128rpx;
height: 128rpx;
margin: 20rpx;
border-radius: 50%;
}.userinfo-nickname {
color: aaa;
}
.usermotto {
margin-top: 200px;
}
页面的样式表文件是非必要的。当页面有样式
表文件时,文件中的样式规则会层叠覆盖app.wxss
中的样式规则。否则,即使没有页面样式表文件,我们也可以在页面的结构文件中直接使用app.wxss
中指定的样式规则。
index.json是页面的配置文件。页面的配置文件
同样是非必要的,而且只能配置window配置项的属
性值。当页面有配置文件时,文件中的配置项在该
页面上会覆盖app.json的window中相同的配置项。
若没有指定页面的配置文件,则在该页面直接使用
app.json中的默认配置项。更多配置文件编写与解
析,可参考本书3.1节。接下来我们再看看logs页面。logs.wxml是logs
页面的结构文件,代码见程序清单2-7。
程序清单2-7 页面结构logs.wxml
logs页面使用
注意 上述代码中的
件,它仅仅是一个包装元素,不会在页面中做任何
渲染,只接受控制属性(如wx:for或wx:if)。logs.js是logs页面的脚本文件,代码见程序清单
2-8。
程序清单2-8 页面脚本logs.js
logs.js
var util = require('....utilsutil.js')
Page({
data: {
logs: []
},onLoad: function {
this.setData({
对于logs数组的每个元素使用map方法:即调用匿名回调函数并返回包含结果的数组
logs: (wx.getStorageSync('logs') || []).map(function (log) {
return util.formatTime(new Date(log))
})
})
}
})
上述脚本文件代码中,使用了require来引
入模块化.js脚本文件。关于模块化代码,可参考本
书3.2.3节。2.2 小程序的线程架构与开发步骤
2.2.1 小程序线程架构
通过对小程序项目Hello WXapplet的解析,我
们知道每个小程序包含一个描述整体程序的app实
例和多个描述页面的page。其中app由三个文件构
成:公共配置app.json、公共样式app.wxss、主体逻
辑app.js。每个page最多由四个文件构成:页面配置
page.json、页面结构page.wxml、页面样式
page.wxss、页面主体逻辑page.js。
我们可以按需在app.js和page.js中添加程序在生
命周期的每个阶段相应的事件。比如在页面onLoad
的时候进行数据加载,onShow的时候进行数据的更新。
典型的app.js代码结构如下:
App({
onLaunch: function {
启动时执行的初始化工作
},onShow: function {
小程序启动或从后台进入前台时,触发执行的操作
},onHide: function {
小程序从前台进入后台时,触发执行的操作
},globalConf: {
indexDate:’’,matchDate:’’
},dataCache: {},globalData: 'I am global data'
})
典型的一个页面page.js代码结构:
Page({
Data: {
Text:’This is page data.’
}
onLoad: function(options) {
页面加载时执行的初始化工作
}
onReady: function {
页面就续后触发执行的操作
}, onShow: function {
页面打开时,触发执行的操作
},onHide: function {
页面隐藏时,触发执行的操作
},onUnLoad: function {
页面关闭时触发执行的操作
}, Event handler
viewTap: function {
this.setData({
text:’set some data for updating view.’
})
},})
一个完整的小程序执行的生命周期如图2-4所
示。
图2-4 小程序的生命周期
一个page的生命周期从onLoad事件开始,整个
生命周期内onLoad、onReady、onUnload这三个事件仅执行一次,而onHide和onShow事件在每次页面
隐藏和显示时都会触发。当用户手动触发左上角的
退出箭头时,小程序仅触发app.onHide,下次进入
小程序时会触发app.onShow以及当前
page.onShow。仅当小程序在后台运行超过一定时
间未被唤起、或者用户手动在小程序的控制栏里点
击退出程序、或者小程序内存占用过大被关闭时,小程序将被销毁,会触发app.onUnload事件。
小程序的线程架构示意如图2-5所示。图2-5 小程序线程架构示意图
每个小程序分为2个线程,view与appSer-ver。
其中view线程负责解析渲染页面(wxml和wxss文
件),而appServer线程负责运行js。appSer-ver线程
运行在jsCore中(安卓下运行在X5中,开发工具中
运行在nwjs中)。由于js不跑在WebView里,就不能直接操纵DOM和BOM,这就是小程序没有
window全局变量的原因。2.2.2 小程序开发步骤
理解小程序的线程架构后,我们基本上可以归
纳出一个小程序开发的主要步骤,涉及两大步骤:
1)创建小程序实例(定义、配置及页面执行
关联)。即编写3个app前缀的文件,它们共同描述
了整个小程序主体逻辑、生命周期及页面构成、样
式等。小程序实例将由appServer线程执行。
2)创建页面(编写页面结构与事务处理逻
辑)。在小程序中一个完整的页面(page)是
由.js、.json、.wxml、.wxss这四个文件组成,每个
界面.js和.wxml是必选项,其他两项是可选项。小
程序页面中的.wxss与.wxml文件由view线程执
行,.js文件由appServer线程执行。我们利用组件编写界面(UI)代码,以展现页
面数据或内容视图,这部分代码就保存为页面的
wxml文件:
·微信小程序中的每一个页面的“路径+页面
名”都需要写在app.json文件里名为pages的配置项
中,且pages配置项中的第一个页面是小程序的首
页。
·.wxml文件与.wxss文件是小程序开发框架的一
部分,我们在后面的2.3节详细介绍。2.2.3 为Hello WXapplet添加新页面及示例
代码
我们将为Hello WXapplet小程序添加一个新页
面“demo”,以帮助大家熟悉小程序代码编写步骤。
1)使用微信Web开发者工具,在“编辑”模式
下,鼠标置于pages处,选择“+”号添加“目录”,如
添加一个名为“demo”的目录。如图2-6所示。图2-6 添加目录或文件
2)我们先为demo页面添加一个视图结构文
件,即demo.wxml,操作方法与添加目录类似:在
微信Web开发者工具里,在“编辑”模式下,鼠标置
于pages下的demo目录处,选择“+”号来添加“文
件”,如添加demo.wxml文件,将示例代码中相应的
代码段放入该文件内,并保存。示例的demo.wxml
代码见程序清单2-9。
程序清单2-9 页面结构demo.wxml
demo.wxml
您现在查看是摘要介绍页, 详见PDF附件(18501KB,773页)。





