第5章 资讯类微信小程序 在信息时代,每个人每天都要阅读并了解各种信息,尤其是那些影响人们日常生活的新闻、通知和广告等资讯。目前已经有一些资讯类的微信小程序,如腾讯新闻、新闻联播、东方头条新闻和网易新闻精选等。 在前面的章节中,已经详细介绍微信小程序开发的基础知识。本章将结合资讯类微信小程序项目详细讲解这类项目的设计和开发思路,该项目使用的数据及图片均为开发本项目时事先从网络抓取好存放在本地,并非利用接口实时动态获取,因此运行时无须联网获取这些数据。 了解app.json在微信小程序中的作用。 了解并掌握scrollview组件的使用。 了解并掌握swiper组件的使用。 了解并掌握view组件的使用。 了解并掌握image组件的使用。 了解并掌握switch组件的使用。 了解并掌握text组件的使用。 了解并掌握bindtap和wx.navigateTo的用法。 5.1项目需求和设计思路 在开始设计资讯类微信小程序之前,可以先来看下目前已经有一部分人使用的阅读资讯的微信小程序。图51为腾讯新闻小程序的主界面。 图52为新闻联播小程序的主界面。 图53为东方头条新闻小程序的主界面。 参照上述资讯类小程序,本项目的需求和设计思路如下: (1) 本项目包含首页、设置和日志三个标签页面。小程序启动后,默认显示“首页”界面,点击页面底部的“设置”标签,显示“设置”标签的对应界面; 点击页面底部“日志”标签,显示“日志”标签的对应界面。 (2) 首页标签在默认的index文件夹下,包括七个频道,分别为推荐、热点、美食、娱乐、图片、科技和体育。在频道内左右滑动可以显示对应频道的内容,首页默认显示推荐频道的内容,在某一频道内点击某一新闻内容可以在新的页面里查看相应的详情(以在推荐频道点击第一个新闻为例),该页面在detail文件夹下。 图51腾讯新闻小程序主界面 图52新闻联播小程序主界面 图53东方头条新闻小程序主界面 (3) 设置标签在setting文件夹下,包括消息通知、资讯商城、我要爆料和用户反馈。 5.2项目实现的准备工作 首先按照第1章中介绍的创建新项目的方法和步骤创建一个新项目。启动微信开发者工具,如图54所示。 图54微信开发者工具主界面 单击“+”创建小程序,项目名称为chapter05,如果没有AppID(可以阅读第1章学习如何获取AppID),也可以使用测试号,如图55所示。 图55创建资讯类微信小程序 单击“新建”后,将出现如图56所示的界面,这是开发时的主界面。 图56资讯类微信小程序 在目录树左上角单击“+”,如图57所示。 此时将弹出如图58所示的菜单,选择“目录”。 图57资讯类微信小程序 图58弹出快捷菜单 输入目录名images,如图59所示。 用鼠标左键选中目录images,右击,将弹出如图510所示菜单,用鼠标左键在弹出的菜单中选择“新建目录”。 图59创建images目录 图510新建目录 在目录images下依次创建子目录icon、swiper和tabBar,如图511所示。 打开文件app.json,修改第8和第9行代码,如图512所示。 图511在目录images下新建子目录 图512编辑app.json 此时背景为红色,标题为“资讯类小程序”,在模拟器运行的效果如图513所示。 修改app.wxss文件,删除掉“alignitems: center;”,并将第7行代码中的padding设置为0 0,修改后的代码如图514所示。 图513修改app.json文件后的界面效果 图514修改app.wxss文件 5.3项目实现的关键之处 该项目对应的完整代码请参考教材配套的chapter05文件夹下的代码,接下来仅详细介绍项目实现时的关键代码。 5.3.1标签导航的实现 为了实现点击页面底部的“设置”标签,显示“设置”标签的对应界面; 点击页面底部“日志”标签,显示“日志”标签的对应界面。首先要对app.json文件进行编辑,增加第4行代码,即“pages/setting/setting”,如图515所示。 接下来将教材配套代码chapter05文件夹下的图片indexAfter.jpg、indexBefore.jpg、logAfter.jpg、logBefore.jpg、settingAfter.jpg和settingBefore.jpg复制到本项目中images\tabBar下。 继续对app.json文件进行编辑,在第12行之后增加图516所示的第13行到第37行代码。 图515修改app.json文件(一) 图516修改app.json文件(二) 修改完成后,底部界面将如图517所示。 图517修改app.json文件的底部界面 至此,标签导航已经实现。此时若点击页面底部的“设置”标签,将显示“设置”标签的对应界面,如图518所示。 点击页面底部“日志”标签,显示“日志”标签的对应界面,如图519所示。 图518设置标签对应的界面 图519日志标签对应的界面 5.3.2滑动效果的实现 为了实现在频道内左右滑动可以显示对应频道的内容,需要对index.wxml、index.wxss和index.js这三个文件进行编辑。 1 编辑index.wxml 将index.wxml文件内默认的内容修改为如图520所示的内容。 图520编辑index.wxml 此时在模拟器上,该小程序运行的效果如图521所示。 2 编辑index.wxss 打开文件index.wxss,将之前的样式修改为如图522所示的第2行到第37行代码。 图521编辑index.wxml后的效果图 图522修改index.wxss 3 再次编辑index.wxml 在index.xml文件的第17行之后插入如图523所示的第18行至第33行的代码。 图523再次编辑index.wxml 4 编辑index.js 继续打开文件index.js进行编辑,输入如图524所示第5行至第22行的所有代码,删除onLoad函数内默认的代码及其后的函数getUserInfo(注意: 其实可以不删除这些代码,而是只增加第5行至第22行的代码,并不影响本程序的运行,只是怕一堆不认识的代码在那里影响初学者)。在data中增加了currentTab和flag,并设其初值为0,并将其他变量删除(也是为了不让无关变量影响初学者)。 至此,滑动效果已经完全实现。读者可以尝试在真机上调试本程序,也可以在模拟器上用鼠标代表手指在不同的频道上滑动,可以看到滑到不同的频道,下方的内容是不一样的。默认的热点频道里显示的是热点内容,如图525所示。 图524修改index.js 图525修改后的滑动效果 5.3.3首页新闻内容的实现 为了实现首页热点频道的新闻内容,需要在本项目的pages\index\文件夹下创建rec.wxml文件,将推荐频道的内容写入该文件,对应的样式写入index.wxss; 1 创建rec.xml并写入推荐频道的推荐内容 在目录树中选择pages文件夹的子文件夹index,右击,在弹出的菜单中选择“新建WXML”,如图526所示。 输入rec,完成rec.wxml文件的创建,如图527所示。 在文件rec.wxml中写入如图528所示的所有代码(第1行到第31行)。 2 将样式写入index.wxss 将如图529所示的所有代码(第38行到第90行)写入index.wxss文件的第37行之后。 图526新建WXML 图527新建rec.wxml 图528新建rec.wxml 至此,首页新闻内容的已经实现,如图530所示。 图529将样式写入index.wxss 图530首页新闻内容 5.3.4首页新闻详情的实现 本节将以在推荐频道点击标题为“商务部: 中美双方经贸团队牵头人将于本周五再次通话”的新闻显示其详情(该页面在pages/detail文件夹下)为例,演示如何实现在某一频道内点击某一新闻内容可以在新的页面里查看相应的详情。具体步骤如下。 图531首页新闻内容 1 修改小程序的公共文件app.json 为了将新闻详情页面加入,首先要修改小程序的公共app.json文件。在该文件中增加第4行代码之后增加第5行代码“"pages/detail/detail",”,如图531所示。 注意: 添加第5行代码时,一定不要漏掉该行尾部的英文逗号(,)。 2 在rec.wxml中增加bindtap事件 在新闻内容页面文件rec.wxml的第10行view中增加代码bindtap="recDetail",如图532所示。 图532在rec.wxml中增加recDetail事件 注意: 之所以将bindtap事件recDetail添加在rec.wxml文件中的第10行的view中,是因为这个view对应标题为“商务部: 中美双方经贸团队牵头人将于本周五再次通话”的新闻。 3 修改index.js 为了实现在rec.wxml中点击标题为“商务部: 中美双方经贸团队牵头人将于本周五再次通话”的新闻,跳转到该新闻的详情页面,还需要修改index.js文件。即在index.js中第22行之后插入recDetail函数的实现代码,如图533第23行至第27行所示。 至此,已经实现了从点击标题为“商务部: 中美双方经贸团队牵头人将于本周五再次通话”的新闻,到该新闻详情页面的跳转。跳转后的效果如图534所示。 由于目前尚未在该页面内添加任何代码,因此该页面仅显示pages/detail/detail.wxml。 4 编辑detail.wxml 打开detail.wxml文件,输入如图535所示的代码。 5 编辑 detail.wxss文件 打开detail.wxss文件,输入如图536所示的代码。 图533在index.js中增加recDetail事件的 实现代码 图534新闻详情页面detail.wxml 图535在detail.wxml中输入代码 图536在detail.wxss中输入代码 此时已经完成了新闻详情页面代码的编写,若在首页新闻页面点击标题为“商务部: 中美双方经贸团队牵头人将于本周五再次通话”的新闻,则会跳转到该新闻详情页面,其效果如图537所示。 图537标题为“商务部: 中美双方经贸团队牵头人 将于本周五再次通话”的新闻详情 5.4设置页面的实现 设置页面的实现分为两步,第一步是在setting.wxml页面中写入代码,第二步是在setting.wxss页面中写入样式。 1 编辑setting.wxml页面 在文件setting.wxml页面中输入如图538所示的所有代码(从第1行到第46行)。 2 编辑setting.wxss页面 在文件setting.wxss页面中输入如图539所示的所有代码(从第1行到第27行)。 设置页面代码编写完成后,该页面的效果如图540所示。 图538在文件setting.wxml中输入的代码 图539在文件setting.wxss中输入的代码 图540系统设置页面的运行效果 5.5小结 本章详细描述了一个资讯类微信小程序开发的全过程。从介绍项目的需求和设计思路开始,到实现该项目的准备工作,再到该项目实现的关键之处,包括如何实现标签导航,如何实现滑动效果,如何实现首页新闻,如何实现在首页新闻中点击某一条新闻跳转到该新闻的详情界面,最后介绍了设置页面的实现。 在实现这一项目的过程中,读者可以了解修改app.json,index.wxml,index.wxss和index.js等文件后的作用,也可以进一步了解view,scrollview,swiper,image,switch,text等组件的用法。 本章介绍的资讯类微信小程序所有的数据和图片均存储在手机上,无须联网即可运行。