【愚公系列】《微信小程序与云开发从入门到实践》054-天气预报小程序的开发(最近7天天气模块开发)

举报
愚公搬代码 发表于 2025/01/28 15:47:43 2025/01/28
151 0 0
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳...
标题 详情
作者简介 愚公搬代码
头衔 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。
博客内容 .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎 👍点赞、✍评论、⭐收藏

🚀前言

随着科技的不断进步,我们的生活也变得越来越便利。其中,天气预报小程序的出现,让我们能够随时随地了解天气情况,提前做好出行和生活安排。今天,我们将带大家深入了解天气预报小程序中“最近7天天气模块”的开发过程。

在这篇文章中,我们将详细介绍如何设计和实现一个功能完善的7天天气预报模块。我们会探讨数据获取、界面设计、功能实现等关键环节,并分享一些实用的开发技巧和经验,希望能为正在开发类似项目的朋友们提供帮助和灵感。

🚀一、天气预报小程序的开发(最近7天天气模块开发)

🔎1.数据结构设计

index.js 文件中,我们定义一个 data 字段,其中包含当前城市的名称、天气数据和未来7天的天气数据。如下所示:

data: {
  currentCity: "北京市",
  weatherData: {},
  daysData: []  // 存储未来7天的天气数据
}

🔎2.获取天气数据并组装

我们通过三方天气服务获取天气数据。获取到的数据包含了未来一周的天气情况。为了方便使用,我们将其组装成一个数组 daysData。代码示例如下:

refreshWeatherData: function() {
  // 获取天气数据并进行组装
  networkModule.network.getWeatherData(this.data.currentCity, (res, error) => {
    let daysData = [];
    
    // 手动组装未来7天的天气数据
    for (let i = 0; i < 7; i++) {
      daysData.push(res.data.showapi_res_body[`f${i + 1}`]);
    }

    // 更新数据
    this.setData({
      weatherData: res.data.showapi_res_body,
      daysData: daysData
    });
  });
}

🔎3.在 index.wxml 中展示天气数据

index.wxml 文件中,我们需要添加未来7天的天气预报列表框架。这里使用 wx:for 循环来展示 daysData 数组中的每一天天气信息,并通过自定义组件 days-item 来渲染每一项数据:

<view class="days">
  <view class="block-header">未来7天预报</view>
  <view wx:for="{{daysData}}">
    <days-item itemData="{{item}}"></days-item>
  </view>
</view>

此外,添加对应的样式代码,如下所示:

.days {
  width: 100%;
}

.block-header {
  font-weight: bold;
  margin-left: 15px;
  margin-top: 10px;
  margin-bottom: 10px;
}

🔎4.创建自定义组件 days-item

components 文件夹下新建一个名为 daysItem 的自定义组件,用于显示每一天的天气数据。首先,在 daysItem.wxml 文件中编写以下代码来展示天气数据:

<!-- components/daysItem.wxml -->
<view>
  <view class="date">星期{{itemData.weekday}}</view>
  <view class="line"></view>
  <view class="items">
    <!-- 白天天气 -->
    <view class="item">
      <view class="title">白天</view>
      <view class="content">{{itemData.day_weather}}<image style="width: 20px; height: 20px; margin-left: 5px;" src="{{itemData.day_weather_pic}}"></image></view>
      <view class="content">{{itemData.day_air_temperature}}℃</view>
    </view>

    <!-- 夜间天气 -->
    <view class="item">
      <view class="title">夜间</view>
      <view class="content">{{itemData.night_weather}}<image style="width: 20px; height: 20px; margin-left: 5px;" src="{{itemData.night_weather_pic}}"></image></view>
      <view class="content">{{itemData.night_air_temperature}}℃</view>
    </view>

    <!-- 气象情况 -->
    <view class="item">
      <view class="title">气象</view>
      <view class="content">{{itemData.air_pressure}}hPa</view>
      <view class="content">{{itemData.precipitation}}降水</view>
    </view>

    <!-- 风况 -->
    <view class="item">
      <view class="title">风况</view>
      <view class="content">{{itemData.day_wind_direction}}</view>
      <view class="content">{{itemData.day_wind_power}}</view>
    </view>
  </view>
  <view class="line"></view>
</view>

🔎5.添加样式

daysItem.wxss 文件中,我们需要定义每个元素的样式,具体代码可以参考以下模板:

.date {
  font-size: 16px;
  margin-bottom: 10px;
}

.line {
  border-bottom: 1px solid #ccc;
  margin: 10px 0;
}

.items .item {
  margin-bottom: 10px;
}

.title {
  font-weight: bold;
}

.content {
  margin-left: 10px;
}

🔎6.定义组件属性

daysItem.js 文件中,我们需要声明 itemData 属性,用来接收父组件传递的天气数据:

// components/daysItem.js
Component({
  properties: {
    itemData: {
      type: Object,
      value: {}
    }
  }
});

🔎7.在 index.json 中引用自定义组件

最后,我们在 index.json 文件中引用 days-item 组件,如下所示:

{
  "usingComponents": {
    "days-item": "../../components/daysItem"
  }
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。