动手开发一个名为“微天气”的微信小程序(上)
引言:在智能手机软件的装机量中,天气预报类的APP排在比較靠前的位置。说明用户对天气的关注度非常高。由于人们不管是工作还是度假旅游等各种活动都须要依据自然天气来安排。跟着本文开发一个“微天气”小程序,方便微信网友随时查看天气。
接下来两天小编将同您一起开发一个“微天气”小程序,本文首先向大家介绍“微天气”的API与界面代码编写。本文选自《从零開始学微信小程序开发》。
在一套软件系统中,微信小程序一般是作为前端来使用的,一般还须要有后端的系统提供支持。这就须要开发人员(或运营者)购买云server(或有自己的独立主机),将后端系统部署其上。对于非常多刚開始学习的人来说。这些条件不easy达到。但我们能够选择使用在线免费API接口,开发人员仅仅须要编写好前端系统(微信小程序),在前端系统中直接调用这些免费API就可以获得对应的数据。
1 天气预报API
要开发天气预报类APP。首先要考虑的问题就是天气预报数据的来源。有了天气预报的数据来源。才干按须要在微信小程序中显示出来。事实上。微信小程序就是一个显示天气信息的前端系统。而天气预报API就是后端系统。
因为天气预报API能够在网上免费获取,因此。本案例中开发人员不须要开发后端系统,仅仅须要依据API的要求进行訪问就可以。
中华万年历的天气预报接口
中华万年历的天气预报接口地址例如以下:
http://wthrcdn.etouch.cn/weather_mini?city=北京
该接口非常easy,仅仅须要给出城市的名称就可以。接口返回的数据也是JSON格式,详细形式例如以下所看到的:
{
"desc": "OK",
"status": 1000,
"data": {
"wendu": "15",
"ganmao": "昼夜温差较大,较易发生感冒。请适当增减衣服。
体质较弱的朋友请注意防护。",
"forecast": [{
"fengxiang": "北风",
"fengli": "3-4级",
"high": "高温 14℃",
"type": "晴",
"low": "低温 3℃",
"date": "19日星期六"
},
{
"fengxiang": "无持续风向",
"fengli": "微风级",
"high": "高温 4℃",
"type": "雨夹雪",
"low": "低温 -1℃",
"date": "20日星期天"
},
{
"fengxiang": "北风",
"fengli": "3-4级",
"high": "高温 0℃",
"type": "小雪",
"low": "低温 -7℃",
"date": "21日星期一"
},
{
"fengxiang": "北风",
"fengli": "3-4级",
"high": "高温 -3℃",
"type": "晴",
"low": "低温 -9℃",
"date": "22日星期二"
},
{
"fengxiang": "无持续风向",
"fengli": "微风级",
"high": "高温 -3℃",
"type": "多云",
"low": "低温 -10℃",
"date": "23日星期三"
}],
"yesterday": {
"fl": "微风",
"fx": "无持续风向",
"high": "高温 10℃",
"type": "霾",
"low": "低温 6℃",
"date": "18日星期五"
},
"aqi": "40",
"city": "北京"
}
}
能够看出。以上返回的JSON数据非常多,有当天的温度wendu、感冒描写叙述ganmao,还有forecast数组中保存的近期5天的天气数据,以及yesterday中保存的昨日天气数据。
2 界面设计
本案例要求界面简单,尽量在一个页面中显示当前天气、近期五天的天气,同一时候,还要提供按城市名称查询的功能,可显示出所查询城市的天气预报信息。
UI设计例如以下。
在图中。上方显示所查询城市的名称。右側显示当前日期。
接着以较大字号显示查询城市的温度和感冒描写叙述。下方排着5个小卡片显示近期5天的天气信息,最下方接收用户输入要查询的城市名称,单击“查询”button就可以查询指定城市的天气预报信息。
当刚打开该小程序时。因为用户还没有输入查询城市名称。须要设置一个默认城市名称,以方便显示初始的天气预报信息。
3 编写界面代码
选择好使用的API并设计好UI界面的布局之后,就能够创建微信小程序项目。并编写界面代码和逻辑层的JavaScript代码了。
1 创建项目
依据本书前面各章的案例。首先按下面步骤创建出项目。
(1)创建名为ch11的项目文件夹。
(2)启动微信小程序开发工具,在启动界面中单击“加入项目”button,打开例如以下的对话框。 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="color:rgb(0,162,202); text-decoration:none; background:0px 0px">
(3)在上面对话框中填写好对应的项目名称,并选择保存项目的文件夹,单击“加入项目”button就可以创建好一个项目的框架。
本项目仅仅有一个页面,因此也就不须要再加入其它页面,将index页面中已有的内容删除。然后再在index页面中编写wxml和js代码就可以。
(4)改动显示标题,打开app.json文件。改动成下面内容:
{
"pages":[
"pages/index/index",
"pages/logs/logs"
],
"window":{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "微天气",
"navigationBarTextStyle":"black"
}
}
2 编写界面代码
依据UI设计。打开index.wxml文件,删除该文件原有内容,输入下面wxml代码。
<view class="content">
<!--显示当天的天气信息-->
<view class="info">
<!--城市名称 当前日期-->
<view class="city">{{city}} ({{today}})</view>
<!--当天温度-->
<view class="temp">{{weather.wendu}}℃</view>
<!--感冒描写叙述-->
<view class="weather">{{weather.ganmao}}</view>
</view>
<!--昨天的天气信息-->
<view class="yesterday">
<view class="detail"><text class="yesterday-title">昨天</text>
{{weather.yesterday.date}}</view>
<view class="detail"> {{weather.yesterday.type}} <!--天气类型,如阴、晴-->
{{weather.yesterday.fx}} <!--风向-->
{{weather.yesterday.fl}} <!--风力-->
{{weather.yesterday.low}} <!--最低温度-->
{{weather.yesterday.high}} <!--最高温度-->
</view>
</view>
<!--近期五天天气信息-->
<view class="forecast" >
<view class="next-day" wx:key="{{index}}" wx:for="{{weather.forecast}}" >
<!--日期-->
<view class="detail date">{{item.date}}</view>
<!--天气类型-->
<view class="detail">{{item.type}}</view>
<!--最高温度-->
<view class="detail">{{item.high}}</view>
<!--最低温度-->
<view class="detail">{{item.low}}</view>
<!--风向-->
<view class="detail">{{item.fengxiang}}</view>
<!--风力-->
<view class="detail">{{item.fengli}}</view>
</view>
</view>
<!--搜索-->
<view class="search-area">
<input bindinput="inputing" placeholder="请输入城市名称"
value="{{inputCity}}" />
<button type="primary" size="mini" bindtap="bindSearch">查询</button>
</view>
</view>
以上wxml代码加入了凝视,每一部分的作用都在凝视中进行了描写叙述。
3 编写界面样式代码
保存以上wxml代码之后,在开发工具左側的预览区中并没有看到UI设计图中的UI效果。
为了达到设计的布局效果,须要编写样式代码对wxml组件进行控制。事实上,在上面的wxml代码中。已经为各组件设置了class属性,接下来仅仅须要在index.wxss中针对每个class编写对应的样式代码就可以,详细代码例如以下:
.content{
height: 100%;
width:100%;
display:flex;
flex-direction:column;
font-family: 微软雅黑, 宋体;
box-sizing:border-box;
padding:20rpx 10rpx;
color: #252525;
font-size:16px;
background-color:#F2F2F8;
}
/*当天天气信息*/
.info{
margin-top:50rpx;
width:100%;
height:160px;
}
/*城市名称*/
.city{
margin: 20rpx;
border-bottom:1px solid #043567;
}
/*当天温度*/
.temp{
font-size: 120rpx;
line-height: 130rpx;
text-align: center;
padding-top:20rpx;
color:#043567;
}
/*感冒描写叙述*/
.weather{
line-height: 22px;
margin: 10px 0;
padding: 0 10px;
}
/*昨天天气信息*/
.yesterday{
width:93%;
padding:20rpx;
margin-top:50rpx;
border-radius:10rpx;
border:1px solid #043567;
}
/*昨天的*/
.yesterday-title{
color:red;
}
/*近期五天天气信息*/
.forecast{
width: 100%;
display:flex;
margin-top:50rpx;
align-self:flex-end;
}
/*每一天的天气信息*/
.next-day{
width:20%;
height:450rpx;
text-align:center;
line-height:30px;
font-size:14px;
margin: 0 3rpx;
border:1px solid #043567;
border-radius:10rpx;
}
/*日期*/
.date{
margin-bottom:20rpx;
border-bottom:1px solid #043567;
color:#F29F39;
}
/*搜索区域*/
.search-area{
display:flex;
background: #f4f4f4;
padding: 1rem 0.5rem;
}
/*搜索区域的输入框*/
.search-area input{
width:70%;
height: 38px;
line-height: 38px;
border: 1px solid #ccc;
box-shadow: inset 0 0 10px #ccc;
color: #000;
background-color:#fff;
border-radius: 5px;
}
/*搜索区的按钮*/
.search-area button{
width: 30%;
height: 40px;
line-height: 40px;
margin-left: 5px;
}
在上面的wxss代码中,每个class设置前都有相应的凝视,可与wxml代码相应起来。
保存好index.wxss文件之后,开发工具左側预览区可看到以下的界面效果。 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="【图3】" title="【图3】" style="border:0px; vertical-align:middle; max-width:100%">
至此我们介绍了“微天气”的API与界面代码编写,我们将在明天的推送中向您继续介绍逻辑层代码以及查询代码的编写。
本文选自《从零開始学微信小程序开发》,点此链接可在博文视点官网查看此书。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="图片描写叙述" title="图片描写叙述" style="border:0px; vertical-align:middle; max-width:100%">
想及时获得很多其它精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
动手开发一个名为“微天气”的微信小程序(上)的更多相关文章
- 全栈开发工程师微信小程序 - 上
全栈开发工程师微信小程序-上 实现swiper组件 swiper 滑块视图容器. indicator-dots 是否显示面板指示点 false indicator-color 指示点颜色 indica ...
- 耗时一个月上架了一款微信小程序,赚了2022年的第一笔副收入
今天不谈技术,只谈经历. 前戏 相信有很多的程序员都有一个产品梦,希望有一款属于自己产品.毕竟工作中遇到的有些"脑残"的产品经理不是一个两个,最后不得不因为"技术服务于业 ...
- 全栈开发工程师微信小程序-上(下)
全栈开发工程师微信小程序-上(下) icon 图标 success, success_no_circle, info, warn, waiting, cancel, download, search, ...
- 全栈开发工程师微信小程序-上(中)
全栈开发工程师微信小程序-上(中) width: 750rpx; 750rpx代表与屏幕等宽,rpx的缩写responsive pixel,这个单位是可以根据屏幕大小进行自适应调整的像素单位. 小程序 ...
- 两天撸一个天气应用微信小程序
更新说明: I.气象数据由百度地图开放平台修改为了和风天气,需要注册账号获取 key: II.d0e51c8 版本之后为小程序云开发版本,若未开通云开发功能,为不影响小程序正常运行,可以将版本号回退到 ...
- 小程序语音红包开发中 汉字转拼音的问题 微信小程序红包开发遇到的坑
公司最近在开发微信小程序的红包功能,语音红包需要用到文字转拼音的功能. 之前介绍过怎么将中文的汉字转为拼音的,具体看下面这篇文章. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信 ...
- 如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
一夜之间,微信小程序刷爆了行业网站和朋友圈,小程序真的能如张小龙所说让用户"即用即走"吗? 其功能能和动辄几十兆安装文件的APP相比吗? 开发小程序,是不是意味着移动应用开发的一次 ...
- 利用css transition属性实现一个带动画显隐的微信小程序部件
我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的,但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使(下面说明)所以我们这个时候会 ...
- 1-微信小程序开发(安装软件和运行第一个微信小程序)
https://developers.weixin.qq.com/miniprogram/dev/ 我的 打开 上传成功后
随机推荐
- HTML学习笔记 div布局及table布局案例 第三节 (原创)参考使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python3 re正则匹配数据获取案例
# coding=utf-8import requestsimport jsonfrom retrying import retryimport re class TyY: def __init__( ...
- ubuntu 14.04搭建PHP项目基本流程
首先准备需要安装东西的列表1.apache服务器,2.php,3.mysql,4.几个软件包的链接包,安装方式是以apt-get方式安装; 1.安装apache服务器: apt-get install ...
- python+selenium安装
1.下载Python 请到官网自行下载安装https://www.python.org/downloads/ 在安装的时候,注意一定要勾上这个选项,可以免去我们配置系统变量的麻烦,如果你忘了,没关系, ...
- 【Python】Non-ASCII character '\xe6' 错误解决方法
刚刚在写Python程序的时候遇到了一个问题,无论是在程序中什么地方出现中文字符,都会出现如下错误 SyntaxError: Non-ASCII character '\xe6' 网上查阅了一下这应该 ...
- OGEngine_2.x中BitmapFont加载后黑屏问题的解决办法
在我使用OGEngine_2.x进行消灭圈圈(星星)游戏的实践的时候,使用BitmapFont对自定义字体进行调用. 原文字体教程如下:http://blog.csdn.net/OrangeGame/ ...
- Redis轻快入门
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...
- JavaScript数据可视化编程学习(二)Flotr2,雷达图
一.雷达图 使用雷达图显示多维数据. 如果你有多维的数据要展示,那么雷达图就是一种非常有效的可视化方法. 由于雷达图不常用,比较陌生,所以向用户解释的时候有一些难度.注意使用雷达图会增加用户认知负担. ...
- Mybatis查询时报 Bad format for Time '454:54:54' in column 6 异常
报 Bad format for Time '454:54:54' in column 6 解决方案:1. 查询实体类和.xml数据是否相对应 2. 查询sql是否正确 3. 查看表的设计,是 ...
- 01_Python简介
Python 简介 *为什么学习python http://bbs.fishc.com/thread-35584-1-1.html Python 特点 易于学习:Python有相对较少的关键字,结构简 ...