文享日志

微信小程序-石大盒子

小程序

发表于2018年08月16日05:03:18

更新于2018年08月16日20:18:02

0条评论 239次阅读

简介:

  想做一款微信小程序,思来想去没有什么好点子,于是做了“石大盒子”这么一款小程序,小程序同步石河子大学官网内容。数据由WebSplider爬虫进行采集。


项目地址:

https://github.com/LuckyHH/wx-shzu


过程:

        我实在是郁闷的不行,花了好久编辑完文章,结果发表的时候,忘记登录状态已经过期了。。。然后所以内容都没了。。。第二次编辑完之后,又忘了登录状态已经过期了,然后内容又没了。。。

        我真的好气哦!!!!!!!!

        在有JavaScript和Vue的基础下,上手小程序开发其实蛮容易的。但开发这个小程序却也花费了我不少时间,一是在创意方面(内容,配色,图标等方面的考量),二是数据的抓取。

        “石大盒子”这款小程序总共调用了27个WebSplider的数据API,内容涉及石河子大学官网的方方面面。抓取数据的过程真是让我吐了一口老血。。请看下图:


图1


图2


这是我用同一个程序,使用同一个爬虫配置,在不同的平台上抓取的数据。我真的是绞尽脑汁,捶胸顿足,痛哭流涕也想不明白是为什么。上图中图1是正确的结果,是使用Heroku上的WebSplider爬取的,图2是使用腾讯云服务器上的WebSplider爬取的。在花了大量时间从腾讯云上对石河子大学官网抓取数据后,我又不得不再花大量时间再从Heroku上再抓取一遍。。。

      然后就是小程序本身的编写。在参照官网文档的情况下,写起来其实还算是蛮顺利的。主要就是URL请求策略方面的问题。本来想着在初始化小程序的时候,对所有请求的URL进行全部请求,将获得数据保存到全局变量,这样用户访问任意内容都不会有延迟。但是,我想的还是简单了,先不说腾讯限制并发请求数量限制为10个,再者我发现虽然将 初始化onLaunch函数 设置为async,等所有请求成功之后再渲染首页,但首页渲染却并不是在onLaunch函数运行完毕之后才进行。所以首页会出现没有数据的情况。。这让我有点始料未及还有点懵逼,难道程序不是在初始化完成之后再进行渲染的吗?为什么我没有初始化完毕就开始渲染了?看了几遍代码无误之后...我想可能是小程序这里有bug...

      小程序的page之间不能直接通信。但可以借助URL,本地存储,全局变量等几种方式彼此通信。“石大盒子”选用全局变量这种方案,URL通信只支持字符串信息传递,而本地存储这种方案感觉并不适用我的这种应用场景。。

      还有就是HTML标签解析问题。小程序不支持解析HTML标签,意味着我从石河子大学官网获得的文章内容没有办法有格式的输出到小程序页面。市面上有wxParse插件可以解决这个问题,但我只要将该插件包导入项目,项目就会报错。到该插件的Github查看了一下,发现该项目貌似要被废弃了,项目已经有1年多没更新,还问题还有130多个。所有我没有继续在这个问题上纠缠,在抓取数据的时候,直接抓的text。所以在小程序中看文章,都是一坨。。。

      写这个小程序的时候,我还在tabbar问题上纠结了好多天,明明我按照官网的配置,都配置好tabbar了,这个tabbar就是出不来,我又百度谷歌搜狗了好久好久,还是找不到问题。微信开发者工具卸载安装了好多遍也还是出不来。。。最后我将项目导入朋友的windows版中的微信开发者工具,却可以正常显示,这说明我的代码没问题。。。偶然的情况下,然后我将我电脑的开发者工具中的手机型号调成IPhone5,久违的tabbar出现了(电脑分辨率问题)。。


最后:

      小程序还没有提交到微信,我也不打算提交了。一是因为小程序要求的通信URL必须是HTTPS和必须要经过备案,HTTPS还好说,Heroku这个域名不是我的,我也没办法备案。。虽然我的腾讯云服务器备案过了,且也是HTTPS的,但是抓的结果我不知道为什么不是正确的。。况且再用27个API的配置再抓一遍,我是真的受不了了。(这个抓API我前前后后总共弄了4次,已经花了大量时间和经历)。。二是我的目的也已经达到了,我就是想尝试写写新东西。。


预览:

      下载项目,导入微信开发者工具,就可以体验该小程序。。。注意,第一次打开小程序可能没有数据,鼠标点到代码中,ctrl+s一下就好了,还有要就是关闭详情中的“ES6转ES5”和开启“不校验合法域名”。


Then:

放几张感觉还好的图片

主页



文章列表与详情


API

API


👍 1  👎 0
共有0条评论

发表新评论

提交

广告展示

腾讯云推广 阿里云推广