实验2 天气预报

实验1 天气预报

  • 一、实验目标
  • 二、实验步骤
    • (一)准备工作
    • (二)小程序开发
      • 项目创建
      • 页面配置
      • 视图设计
      • 逻辑实现
  • 三、程序运行结果
  • 四、问题总结与体会
    • 主要问题及解决方案
    • 主要收获

chunk的博客地址

一、实验目标

1、掌握服务器域名配置和临时服务器部署;
2、掌握 wx.request 接口的用法。

二、实验步骤

(一)准备工作

  1. 申请API密钥

    • 选择可以提供全球气象数据服务s接口得和风天气API,首先进入官方网址,输入邮箱免费注册;
    • 注册完成后访问控制台查看账号信息,依据官方文档成功生成API KEY,记录该key。(API KEY可以用于在小程序发出网络请求时作为身份识别的标识一起发送给和风天气的第三方服务器)
  2. 调用API

    • 取出在和风天气中的API KEY及API Host
    • 访问https://mn5xmd96fj.re.qweatherapi.com//v7/weather/now?location=101010100&key=f40427d91c8c43a9a7db17aede262b09。

weather关键字代表获取实况天气,基于weather的接口有两个必填参数,分别为city和key,其中,city表示要查询的城市,此处选取城市ID为主要参数,key即为开发者的API KEY。

  1. 服务器域名配置

    登录微信公众平台,进入小程序管理员后台,在“开发设置面板”的“服务器域名”中添加或修改所需要的网络通信的服务器域名地址。此小程序主要需要添加的为request合法域名,即为开发者在和风天气中的API Host。

(二)小程序开发

项目创建

在微信开发者工具新建空项目。

页面配置

  1. 创建页面文件
    在根目录下生成文件夹pages存放页面文件,首页默认为index。

  2. 删除和修改文件

    • 删除utils文件夹及其所有内容;
    • 删除pages文件夹下的logs目录及其所有内容;
    • 删除index.wxmlindex.wxssapp.wxss的所有代码;
    • 删除index.js的全部代码,输入关键词"page"自动补全函数;
    • 删除的app.js的所有代码,输入关键词"app"自动补全函数。

      在这里插入图片描述
  3. 创建其他文件
    本项目还需要一个文件夹用存放天气图标素材,素材均来自于和风天气官网。在根目录下新建images文件夹及其子文件夹weather_icon,将图片文件全部复制进去。(需要注意的是,为了使图片更加覆盖各种天气,这里下载的是和风天气官网提供的完整zip,但图片格式为.svg

视图设计

  1. 导航栏设计
    更改app.json文件将导航栏标题和背景改为自定义颜色。
    图中所示代码改为蓝色背景色,预览效果如图。

  2. 页面设计

    本小程序页面主要包含4个区域:

    1. 区域1: 地区选择器,用户可以自行选择查询的省、市、区;
    2. 区域2: 显示当前城市的温度和天气状态的文字说明;
    3. 区域3: 显示当前城市的天气图标;
    4. 区域4: 分多行显示其他天气信息,如湿度、气压、能见度和风向。
      具体使用的组件如下:
    • <view>

    • <picker>

    • <image>
      首先,定义页面的容器container并在app.wxss中设置容器样式,包括高度、布局、是否居中以及间距。

      接着,添加各种组件元素。

    • 区域1:使用<picker>组件完成,用户可以点击切换其他城市,组件内部随意填写一个城市名称(相当于默认城市),当点击城市名称时会从底部弹出控件让用户进行省、市、区的选择;

    • 区域2:主要是进行文字的设计,包括当前城市的温度和天气状况;

    • 区域3:将天气图标导入(由于文件中下载的是.svg的图标,因此在image组件内部必须注意要写为:/images/weather_icon/1.svg);

    • 区域4:展示多行天气信息,使用detail,接着定义需要的单元行(bar),在每行内部定义单元格(box)。

逻辑实现

  1. 更新省、市、区信息
    picker组件中的具体省份改为{{region}},接着为该组件追加自定义的bindchange事件,用于监听选项变化;

    由于地区选择器的返回结果是数组的形式,因此在JS文件的data中定义一个包含省、市、区三个项目的数组,初始信息由开发者自己定义。
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  2. 获取实况天气数据
    在JS文件中添加自定义getWeather函数进行实况天气数据的获取,后续的天气查询以城市作为查询依据。

    将定义的getWeather函数在生命周期函数onLoadregionChange中分别调用,表示当页面加载时和切换城市时均主动获取一次实况天气数据。

    编译后重新运行会在控制台得到第三方服务器发挥的JSON数据,如图所示。
  3. 更新页面天气信息
    将WXML页面上的所有零食数据都替换成{{now.属性}}的形式,为了加快获取数据的速度,最好在IS文件的data中为now规定初始数据,在获取到实际数据之前可以临时显示这些数据。

三、程序运行结果

可以成功获取动态获取各城市天气:
在这里插入图片描述在这里插入图片描述

四、问题总结与体会

主要问题及解决方案

  1. API配置问题

    • 问题:URL地址不完整,域名未加入白名单

    • 解决:配置完整API地址,在小程序后台添加域名白名单

  2. 参数格式错误

    • 问题:使用城市名称而非城市代码

    • 解决:建立城市名称到代码的映射关系

  3. 数据字段不匹配

    • 问题:API返回字段与代码期望字段不一致

    • 解决:修正字段映射关系

  4. 图标格式错误

    • 问题:代码引用PNG格式,实际为SVG格式

    • 解决:修改图标路径为正确的SVG格式

  5. 缺少动态更新

    • 问题:location参数硬编码,无法动态切换城市

    • 解决:实现getCityCode函数,支持动态城市代码获取

主要收获

  1. 微信小程序开发技能
    • 学会了picker组件的多级联动,支持省市区三级选择
    • 理解了数据绑定机制和setData的使用方法
    • 更加熟悉小程序的生命周期函数(onLoadonShow等)
  2. 网络编程与API集成
    • 学会了使用wx.request接口,了解API及服务器域名配置
    • 掌握了JSON数据的解析和字段映射技巧
  3. 调试与问题解决能力
    • 熟练使用微信开发者工具的调试功能和网络面板
    • 掌握了系统性的问题分析方法:问题定位→原因分析→解决方案→验证测试
    • 提升了阅读官方文档和API文档的能力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94387.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CVE-2025-5419】(内附EXP) Google Chrome 越界读写漏洞【内附EXP】

前言 近日,奇安信CERT监测到Google Chrome中曝出一枚高危安全漏洞(CVE-2025-5419,QVD-2025-21836),该漏洞属于越界读写问题,攻击者只需通过构造恶意网页,就可能触发漏洞,从而绕过Chrome的沙箱防护,直接实现远程代码执行,最终完全控制用户设备。目前,安全社区已确认…

【科研绘图系列】R语言在海洋生态学中的应用:浮游植物糖类组成与溶解性有机碳的关系

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍 数据准备 数据处理 糖类组成随年龄的变化 糖类组成与DOC含量的关系 数据可视化 加载R包 数据下载 导入数据 数据预处理 画图 总结 系统信息 介绍 本教材通过R语言及其强大的数据…

webpack文件指纹:hash、chunkhash与contenthash详解

文件指纹就是打包后输出文件的后缀&#xff0c;每次构建都会生成不同的文件后缀&#xff0c;这样可以防止浏览器的默认缓存&#xff0c;使客户端代码可以及时修改。文件指纹的三种方式&#xff1a;‌ hash ‌&#xff1a;基于整个项目构建内容生成全局哈希值&#xff0c;任何文…

Pytest 插件怎么写:从0开发一个你自己的插件

概述 你用过 pytest-html 生成报告,或用 pytest-xdist 并行运行测试吗?这些强大的功能,其实都是 Pytest 插件 这些都是我们引入项目后直接使用的,当然 你也可以自己写一个 Pytest 插件 基本原理 Pytest 的强大,源于它的 插件系统。它允许你通过定义特定的函数(称为 H…

Java:IO流——基础篇

目录 前言 一、File 类 1、概述 ①构造方法 ②实例对象 2、使用 ①查看名称、路径、长度 ②判断、创建和删除操作 ③目录遍历操作 二、IO流 1、流的概念 2、流的分类 ①按数据流向 ②按数据类型 ③按功能 3、字节流 ⑴FileInputStream——文件输入流 ⑵FileOutputStream——文件…

数据挖掘 5.1~5.2 PCA——前言

5.1 Twelve ways to fool the masses 5.1 愚弄大众的十二种方法 5.2.1 Prelim: Old MacDonald meets Lagrange 5.2.1 前言&#xff1a;老麦克唐纳遇见拉格朗日 5.2. Prelim: Meet stubborn vectors 5.2. 前言&#xff1a;遇见顽固向量 5.2.3 Prelim: Covariance and its friend…

DeepSeek分析

(非走向数字时代,融入数字生活,构建数字生态的分解,只是感觉可以分享给大家---因此现设置VIP,旺海涵) 这是deepseek刚爆的时候,春节紧急对其做的分析。 内容还是私藏状态,做了初步评估,感觉可以分享给大家!!! 但是非共享的构建数字生态的核心,因此添加了vip设置…

2025第五届人工智能、自动化与高性能计算国际会议 (AIAHPC 2025)

重要信息 官网&#xff1a;www.aiahpc.org 时间&#xff1a;2025年9月19-21日 地点&#xff1a;中国合肥 主题 1、高性能计算 并行和分布式系统架构 高性能计算的语言和编译器 并行和分布式软件技术 并行和分布式算法 嵌入式系统 计算智能 点对点计算 网格和集群计算…

CORS解决跨域问题的多个方案 - nginx站点配置 / thinkphp框架内置中间件 / 纯前端vue、vite的server.proxy代理

效果图 跨域报错 跨域解决 方案实测 1. nginx、apache站点配置 > OK 2. thinkphp框架内置中间件 “跨域请求支持” > OK 3. 纯前端vue、vite的server.proxy代理 > 不OK 方案具体设置 1. nginx、apache站点配置 > OK 修改nginx服务器的站点的跨域信息 日志下…

什么是Omni-Hub?一套面向“万物智联”时代的操作系统级方法论

Omni-Hub&#xff08;中文常译“全向中枢”&#xff09;&#xff0c;是一套面向未来数字化生态的开放型系统级框架&#xff0c;由“Omni”&#xff08;全域、全向、全模态&#xff09;与“Hub”&#xff08;中枢、枢纽&#xff09;组合而成&#xff0c;旨在通过统一接口、协议与…

ARP地址解析协议

工作原理ARP是一个封装于数据链路层的二层协议&#xff0c;其目的主要是将IP地址解析为MAC地址&#xff0c;通过广播&#x1f509;询问Who is x.x.x.x&#xff0c;对方收到后单播回应自己的mac地址动态ARP动态ARP通过ARP协议自动学习和维护IP与MAC的映射关系&#xff0c;表项具…

PortSwigger靶场之Blind SQL injection with out-of-band interaction通关秘籍

一、题目分析 该实验室存在一个盲 SQL 注入漏洞。该应用程序使用跟踪 cookie 进行分析&#xff0c;并执行包含所提交 cookie 值的 SQL 查询。该 SQL 查询是异步执行的&#xff0c;不会对应用程序的响应产生影响。不过&#xff0c;我们可以与外部域触发非带内交互。要解决此漏洞…

笔试-笔记3

1.在以下声明中哪一个表示“指向常量的指针”(指针指向的内容不能修改)&#xff1f; A.char* const p B.const char* p C.char *p const D.char const p 解析&#xff1a; 选B&#xff0c;const修饰的变量为常量&#xff0c;意味着不能修改 A是常量指针&#xff0c;const修饰的…

Linux正则表达式

文章目录一、Linux正则表达式与三剑客知识1.什么是正则表达式&#xff1f;2.为什么要学习正则表达式&#xff1f;3.有关正则表达式容易混淆的事项4.学习正则表达式注意事项5. 正则表达式的分类5.1 基本的正则表达式&#xff08;BRE&#xff09;集合6. 正则表达式测试题7. 扩展正…

MATLAB Figure画布中绘制表格详解

文章目录 1 使用uitable创建带有样式和颜色映射的表格 2 使用imagesc和text创建自定义表格 3 使用patch和text创建完全自定义的表格 4 代码详细讲解 4.1 使用uitable 4.2 使用imagesc和text 4.3 使用patch和text 5 颜色映射技巧 5.1 使用内置颜色映射 5.2 自定义颜色映射函数 5…

Python在语料库建设中的应用:文本收集、数据清理与文件名管理

一、问题的提出在日常语言学习与教学中&#xff0c;语料库是一个不可或缺的工具。它可以帮助我们查找高频词&#xff0c;获取搭配信息、例句信息、关键词信息等。由于建库过程操作步骤多&#xff0c;有时还要用到图片识别、格式转化、文本清理等技巧&#xff0c;很多人往往都止…

STL——priority_queue的使用(快速入门详细)

目录 前言 一、基本知识 二、使用 前言 priority_queue是在queue库里的&#xff0c;所以使用的时候要包含queue头文件。使用方法和堆类似&#xff0c;因为它的底层其实就是大根堆。 一、基本知识 优先队列优先级队列是一种容器适配器&#xff0c;根据一些严格的弱排序标准&…

MATLAB中函数的详细使用

一、函数基本知识function语法&#xff1a; function [,...,] myfun(,...,)&#xff0c; …

服务器初始化流程***

前言在云计算与自动化运维日益成熟的今天&#xff0c;快速、批量地部署服务器已成为常态。然而&#xff0c;一台新构建的云服务器或新安装的物理服务器&#xff0c;仅仅是一个可运行的操作系统内核&#xff0c;远未达到投入生产环境或开发测试的标准。一个缺乏标准化配置的“裸…

Python实现电商Excel读取进行可视化分析

目录专栏导读项目简介功能特性&#x1f4ca; 数据处理功能&#x1f4c8; 统计分析功能&#x1f3a8; 可视化功能&#x1f4cb; 报告生成项目结构安装和使用环境要求安装步骤使用自己的数据依赖包说明输出文件说明静态图表&#xff08;PNG格式&#xff09;交互式图表&#xff08…