![微信小程序开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/512/30918512/b_30918512.jpg)
1.3 编写HelloWorld程序
几乎学习任何一门编程技术,都是从HelloWorld程序开始的。HelloWorld程序虽小,但是“五脏俱全”,本节基于一个最简单的入门程序,展开介绍小程序开发的基础框架。
1.3.1 分析小程序示例工程
1.2.2节创建了一个小程序示例项目,其目录结构如图1-20所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/24_2.jpg?sign=1739290358-7Klm0Q0HCyudo5bjylcXQbCDTwqM4JpE-0-640805a43002e7be84855777f5f44477)
图1-20 小程序示例项目的目录结构
可以看到,小程序项目的根目录下有两个文件夹,分别命名为pages和utils,根目录下还有4个全局文件,其中,3个是应用程序的配置文件,1个是工程配置文件。
在开发小程序时会遇到4种类型的文件:以.js为后缀的文件是核心的逻辑代码文件;以.json为后缀的文件通常用来存储配置信息;以.wxml为后缀的文件用来编写页面结构;以.wxss为后缀的文件是样式表文件,用来进行页面渲染样式的设置。
project.config.json配置文件用来对工程进行全局配置,如工程名称、目录路径、AppID等。project.config.json配置文件可进行配置的常用字段如表1-1所示。
表1-1 project.config.json配置文件可进行配置的常用字段
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/25_1.jpg?sign=1739290358-Vc4lMawrGeszSzL2mdWalYPBq0ZCgSmR-0-ae10aa32c445a8b2f6797b36a8b94b6c)
setting选项可以配置的字段如表1-2所示。
表1-2 setting选项可以配置的字段
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/25_2.jpg?sign=1739290358-PSlxjM97hyBbiAGmdrWk7m0rYzVX5qlc-0-a8351dc291d9a57d599570c927f84ae8)
compileType字段可选的字符串值如表1-3所示。
表1-3 compileType字段可选的字符串值
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/25_3.jpg?sign=1739290358-3UTFnIrHY1lXnopbgAAfdzuOo6go2bMP-0-8e373b0a90a60be7c197c1f5e0be9d3f)
app.js文件是当前应用程序的入口文件,阅读此文件的代码可以发现,其中只调用了一个App()函数。App()函数的作用是注册小程序,并且会接收一个Object作为参数,其中会定义小程序的生命周期回调。需要注意的是,App()函数必须在app.js文件中进行调用,并且只能调用一次。
App()函数中传入的Object参数可以指定的回调函数如表1-4所示。
表1-4 App()函数中传入的Object参数可以指定的回调函数
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/26_1.jpg?sign=1739290358-RYUj5sa3cQUYjEEzhfxiv6v01iIN5x5N-0-44debfd160c2653f93abec9a08a7fba2)
app.json文件用来对小程序进行全局配置,其决定页面文件的路径、窗口表现等,可配置项如表1-5所示。
表1-5 app.json文件用来对小程序进行全局配置的可配置项
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/26_2.jpg?sign=1739290358-FzVb2lrdxgVIDjXJeDx5vpdWL6zvEoBW-0-7496de1330b3bcaa1567312a0c277637)
窗口配置字段window对象的可配置属性如表1-6所示。
表1-6 窗口配置字段window对象的可配置属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/26_3.jpg?sign=1739290358-aveMtA0AXZvfPh81ZC4zBTpLxe3e0J0R-0-b4aef3c5227fa973c95e14ad063d6960)
tabBar字段的可配置属性如表1-7所示。
表1-7 tabBar字段的可配置属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/27_2.jpg?sign=1739290358-JzrM28TBceB04AtzXfAKiVbhTnIeTUKL-0-00c0fedf07b1fa0f0d0bea1e28d7d6dc)
关于标签栏的list属性,其中可以定义一组标签,标签数量需要大于1个且小于6个。每个标签可配置的属性如表1-8所示。
表1-8 每个标签可配置的属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/27_3.jpg?sign=1739290358-fEH8itPCngBVRRrN3aGieRIAxuCeqkSI-0-7b4c6fa9a73a54a9a09123dacf5d3dcb)
networkTimeout字段用来配置网络超时时间,其中可以配置的属性如表1-9所示。
表1-9 networkTimeout字段配置网络超时时间可以配置的属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/27_4.jpg?sign=1739290358-mMmC7zHpRQf3Zyw0KGoB7Zg1PMe8mC7E-0-b8d6a47dc1befd1778bcd9ee854fe270)
①注意:
所有超时时间的配置单位都为ms。
app.wxss用来定义一些全局的样式表,样式表的定义与CSS语法基本一致,后面会详细介绍。
除上面比较重要的几个文件外,模板工程中还生成了一个命名为pages的文件夹,该文件夹中又包含index和logs两个文件夹。pages文件夹用来存放页面文件,其中每个文件夹都是一个页面,如index文件夹存放的是示例程序的主页面相关代码,在微信小程序中,每个页面都由JS、JSON、WXML和WXSS这4种类型的文件共同定义。关于页面的相关内容,后面章节会具体介绍。
1.3.2 修改示例程序
下面将模板生成的示例程序修改为HelloWorld程序,先修改index.wxml文件,具体如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/28_1.jpg?sign=1739290358-L90T8F9uTR9YaNKR78arAZbkkD2ZX4Uk-0-138e3563f2018fba911351bedc801ee8)
WXML文件主要编写页面的骨架,上述代码在页面中定义了一个文本组件和一个按钮组件,并绑定了一个单击按钮的回调方法,修改index.js文件,具体如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/28_2.jpg?sign=1739290358-8gJEoicRKzY4xBBKOyXld504rBRLd4zl-0-032db28e8937dce9ceced0c190fc9652)
如上述代码所示,date中定义了文本的颜色,默认为红色,当用户单击按钮时,会随机切换文本的颜色,小程序页面是由数据进行驱动的,当有数据改变时,开发者只需要调用setData方法重新设置数据即可实现页面的刷新。在index.wxss文件中添加样式表属性,具体如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/29_1.jpg?sign=1739290358-CuHSnHUxpZWDN3oa4TxY5qWwCHezL6Gv-0-ebef12b2d2d3fa01dbdaf39bd43b8a5e)
上述样式表代码的意义是将文本与按钮之间隔开60rpx的距离。刷新小程序,即可在模拟器上看到HelloWorld程序的运行效果,单击按钮后,HelloWorld的文字颜色也会随机发生改变,如图1-21所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/29_2.jpg?sign=1739290358-Fl07nLGSPB2uVpGX5LbLIkiv6bxEhN4i-0-c233d9dcf6fd37368c682d4ed198b1be)
图1-21 HelloWorld程序
1.3.3 进行真机调试
通过1.3.2节代码的编写可以发现,当有代码更改时,只要代码文件被保存,模拟器也会实时地进行页面刷新。这是小程序开发中非常方便的一点,它可以让开发者所见即所得地进行程序开发,实时看到代码运行的效果,极大地提高了开发效率,节约了调试时间。如果在真机上进行小程序的预览也非常方便,单击微信开发者工具中的“预览”按钮,即可生成一个小程序二维码(见图1-22),使用手机微信扫描这个二维码即可打开小程序进行真机预览,需要注意的是,此二维码的有效时间很短。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/29_3.jpg?sign=1739290358-bE1CQ01DogkStK35hj55cgGtnc3Y6Y9N-0-9804a3d551b11f4860799050e6c3d4fb)
图1-22 可预览的小程序二维码
预览小程序只能看到小程序的运行效果,并不能使用微信开发者工具中的调试器进行断点调试、页面布局查看、网络查看等功能。若要在真机上使用调试功能,需要使用开发者工具的真机调试功能,单击“真机调试”按钮后也会生成一个二维码,扫描这个二维码后,微信开发者工具会打开一个“真机调试”窗口,开发者在手机上的所有操作都会反馈到这个调试窗口中,如图1-23所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/30_1.jpg?sign=1739290358-2GlJc2SKlf0oUpnnQF4U1V0Zu5kCwOw6-0-3c1eed2b39970fa418f4b4faa9a34152)
图1-23 真机调试窗口