![微信小程序开发实战](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=1739282844-FBAOz38tiCuCVhCzg2IVLH0CVUv8iAsp-0-878103954f3678e572453e0423e64a20)
图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=1739282844-aT4g6X44RPegLMQ4nLsPsfUdgFLVFZ4O-0-5355c379e83df5c4b2ed8e70754f4be2)
setting选项可以配置的字段如表1-2所示。
表1-2 setting选项可以配置的字段
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/25_2.jpg?sign=1739282844-aFMrsJQkyv86qg3PAXZPEr0k9iRnen24-0-f5f37fa8f6f370522065ae966bfb40c2)
compileType字段可选的字符串值如表1-3所示。
表1-3 compileType字段可选的字符串值
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/25_3.jpg?sign=1739282844-wI3mc7VOrHMuH8FRHL3ULJxoygcfnQKr-0-90030609e3dad98ffd1300ff0dc37128)
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=1739282844-PIQEO6eDsoMtnN5sYZVJoyVVjJZ0VCxU-0-f8c5bee0e1a55ba21eec4d409365076a)
app.json文件用来对小程序进行全局配置,其决定页面文件的路径、窗口表现等,可配置项如表1-5所示。
表1-5 app.json文件用来对小程序进行全局配置的可配置项
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/26_2.jpg?sign=1739282844-KhALM8sp4cb93QMmyOYxUddqJIM35x2z-0-c5a089835304bc84f1d9cdc45d4f1406)
窗口配置字段window对象的可配置属性如表1-6所示。
表1-6 窗口配置字段window对象的可配置属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/26_3.jpg?sign=1739282844-WG1eY8FKO4OGXim9Qir5Y4hpwS7IcCwN-0-1a597a623d43aa93e5b4bf134743083f)
tabBar字段的可配置属性如表1-7所示。
表1-7 tabBar字段的可配置属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/27_2.jpg?sign=1739282844-e1ivmeF0d3WuwD0AgS6LvmpMEZINJi0E-0-e94873d2f749ab5f6faf0a898a1bd11a)
关于标签栏的list属性,其中可以定义一组标签,标签数量需要大于1个且小于6个。每个标签可配置的属性如表1-8所示。
表1-8 每个标签可配置的属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/27_3.jpg?sign=1739282844-knjhm0cfC8IPr9SELSGFRXA58UWm0j7F-0-981fa79b9b12fba1cb4e41080dac621c)
networkTimeout字段用来配置网络超时时间,其中可以配置的属性如表1-9所示。
表1-9 networkTimeout字段配置网络超时时间可以配置的属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/27_4.jpg?sign=1739282844-BK6wnnQQ8ndZPczpTDGMV8n7Q68iqg47-0-b46eec05df2e82eae27fccb4892222d4)
①注意:
所有超时时间的配置单位都为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=1739282844-YsXXY0DjowOdv17qFkZt5FKTABVwRGs3-0-009daed8d49d1eb1dbceb5d20549d9e5)
WXML文件主要编写页面的骨架,上述代码在页面中定义了一个文本组件和一个按钮组件,并绑定了一个单击按钮的回调方法,修改index.js文件,具体如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/28_2.jpg?sign=1739282844-jL1vllRCP0ROL8i5vKPiqvnxpER7Vuvh-0-5c866cbb1293ba17685fdc1615f71609)
如上述代码所示,date中定义了文本的颜色,默认为红色,当用户单击按钮时,会随机切换文本的颜色,小程序页面是由数据进行驱动的,当有数据改变时,开发者只需要调用setData方法重新设置数据即可实现页面的刷新。在index.wxss文件中添加样式表属性,具体如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/29_1.jpg?sign=1739282844-6OMMlg7b4vptTJzRJ25dFlT8XI3Omivq-0-8d9c6765f1df63fbb4b45acf95012507)
上述样式表代码的意义是将文本与按钮之间隔开60rpx的距离。刷新小程序,即可在模拟器上看到HelloWorld程序的运行效果,单击按钮后,HelloWorld的文字颜色也会随机发生改变,如图1-21所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/29_2.jpg?sign=1739282844-CYczZ7okOhbSGdD1ZPR1XYFIggKEMudo-0-fc1a8c2a22d9bd336a33030a981a367f)
图1-21 HelloWorld程序
1.3.3 进行真机调试
通过1.3.2节代码的编写可以发现,当有代码更改时,只要代码文件被保存,模拟器也会实时地进行页面刷新。这是小程序开发中非常方便的一点,它可以让开发者所见即所得地进行程序开发,实时看到代码运行的效果,极大地提高了开发效率,节约了调试时间。如果在真机上进行小程序的预览也非常方便,单击微信开发者工具中的“预览”按钮,即可生成一个小程序二维码(见图1-22),使用手机微信扫描这个二维码即可打开小程序进行真机预览,需要注意的是,此二维码的有效时间很短。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/29_3.jpg?sign=1739282844-kFvQPjYXsEBXmtx1dcXwZoOpanqrIyss-0-04cd5eb73b72978e49122c9805a42145)
图1-22 可预览的小程序二维码
预览小程序只能看到小程序的运行效果,并不能使用微信开发者工具中的调试器进行断点调试、页面布局查看、网络查看等功能。若要在真机上使用调试功能,需要使用开发者工具的真机调试功能,单击“真机调试”按钮后也会生成一个二维码,扫描这个二维码后,微信开发者工具会打开一个“真机调试”窗口,开发者在手机上的所有操作都会反馈到这个调试窗口中,如图1-23所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/30_1.jpg?sign=1739282844-2WZEWlRnTG41NQmdssw2JprBMyOnI5l5-0-b67e04ef5247d5a36b5e786e7c82fddd)
图1-23 真机调试窗口