微信小程序开发之前需要注册微信公众平台,在处有详细的步骤,注册完下载微信开发者工具,填写申请完开发者账号以后的AppID(在mp.weixin.com开发-开发设置中查看),然后直接选择创建QuickStart项目(刚开始没看清楚选成云开发了,后来才发现跟教程的不太对,之后再接触云开发吧……),然后到以下的图片界面:
每个页面的结构基本由xx.jsxx.wxmlxx.wxssxx.json构成,类似HTML+CSS+JavaScript,自己体会与后者不同的是:
wxml类似于HTML,但是小程序规定了所能使用的组件(构成页面的基本单位),有view,button,web-view等等,此外还使用自定义组件,自定义组件需要在json文件中先声明,再写wxml模板,js中注册,详细步骤在。在写这个天气demo时只用到了小程序提供的基础组件,自定义组件还需要进一步了解,wxss类似于CSS,只是在选择器中做了很多限制,例如子选择器ab,后代选择器ab,是不可用的,提倡直接使用.classjs与JavaScript类似,只是执行环境不同,不需要像浏览器端,写documentwindow等内置对象,语法是相似的,只要稍微熟悉一下就可以了json配置页面功能,如果写过Chrome的扩展的话,应该很熟悉了,就跟manifest.json类似,小程序里可以配置权限,是否全局开启下拉刷新,是否禁止上下滚动等等大致看了一遍文档以后,开始以quickstart项目为模板写上自己的代码,页面布局如下:
样式的部分,每小时、多日天气预报的样式使用item{flex:1}使每一小块均匀分布,生活指数分两列显示,容器flex布局,flex-wrap设置为wrap,给每个item设置{width:50%;}。
然后就是编写js,在进入小程序以后,首先利用微信的请求定位,获取到对应的经纬度,再通过转换为具体的地理位置显示,再把获取到的地理位置作为参数向和风天气发出请求,得到响应以后获得响应的数据,其中一部分数据需要经过处理简化,然后保存到page.data,同时视图层渲染对应的数据
获取到的天气数据中,日期是包含年份的,通常看天气的信息有月日即可,于是在获得响应的数据以后先对日期的部分进行处理:
for(leti=0;ihe.daily_forecast.length;i++){//去掉日期中的年份res.data.daily_forecast[i].date=res.data.daily_forecast[i].date.slice(5)}然后再进行setData操作
在大致基本功能完成后,实况天气的上方新加了一个input,用于手动输入城市查询那个城市的天气,手动输入查询的城市不经过微信定位,直接把输入的内容作为参数向天气接口查询,成功则显示对应的城市及具体的天气,如果查询的城市有误,则弹出toast提示查询失败。在手动查询城市天气完以后,清空input的内容,因此需要在input的组件中加上value={{inputValue}},查询完以后把page.data.inputValue值置为空。另外,在真机体验时发现如果网络不好,会加载得很慢,等待时间会很长,数据一直显示不了,于是在进入小程序时先加载一个loading,在请求成功时去掉loading,优化用户体验。添加了下拉刷新,首先在json中设置"enablePullDownRefresh":true,然后在js中写对应的函数即可
onPullDownRefresh:function(){getWeather()}关于腾讯位置服务的使用,首先下载相关的jssdk,然后在微信公众平台的开发设置中设置request合法域名,添加https://apis.map.qq.com(同样地,所用到的天气API的地址也是如此),然后引入jssdk并实例化就可以使用了
//引入SDK核心类varQQMapWX=require('../../libs/qqmap-wx-jssdk.js');Page({onLoad:function(){//实例化API核心类qqmapsdk=newQQMapWX({key:'申请的key'});},onShow:function(){qqmapsdk...}})整个小程序demo的过程中,没遇到太大的困难,大概也是因为写的是比较简单的练手项目而已,很多小程序的功能还没用到,例如多个页面之间的数据传递,路由,插件等等,还需要进一步学习。另外,微信开发者工具有时候会出现打不了中文的情况,搜了一下是个常见的bug,需要重启微信开发者工具。调试工具中无法查看伪元素样式也有点不方便,希望之后微信开发者工具能改进这方面,这样的话体验能够能好。
另外附上我的微信小程序demo,可以扫码体验一下(图标自己瞎画的晴天娃娃),由于还需要优化,体验不佳的话还请谅解













