记录---一个网页打造自己的天气预报

news/2025/3/10 1:10:03/文章来源:https://www.cnblogs.com/smileZAZ/p/18758035

 

🧑‍💻 写在开头

点赞 + 收藏 === 学会🤣🤣🤣

 

概念解释

通过数据接口,简化功能开发。天气数据从哪里来?如果是自己采集,不光要写后端代码,最难的是维护啊,所以必须《天气预报》此类APP特别适合 前后端分离的,以下用一个简单的例子快速打通前后端的调用
前端使用HTML页面,通过JS的Fetch发起请求,向天气API拿到JSON数据回显到页面上。
比较麻烦的是找到免费易用天气API接口。

前后端分离

前端负责用户界面展示和交互体验,
后端负责业务逻辑和数据处理。
这里后端直接使用免费的天气API,所以后端可以视为云服务。图上的左半部分。

  1. 前端:HTML+JS+Fetch请求
  2. 后端:云服务API(天气数据接口网站)
  3. 数据:JSON格式传输

数据接口

简化理解为一个返回JSON数据的网页。

项目《天气预报》

一、后端 云服务API(天气数据接口网站)

1. 注册激活帐号(目标得到APPID和APPSecret即可)

找到免费方便的天气API数据接口网页,这里使用 www.yiketianqi.com/ (非广告 只是顺手找到,如果有更方便的欢迎评论区留言),每天有1000次免费调用


 

2. 数据接口文档

一定要注册帐号,才能看到自己的 APPID 和 APPSecret 文档中 www.yiketianqi.com/index/doc 。 直接复制下图(1) 就是前端用到的 目标数据接口

3.测试天气数据API

以下URL供 前端请求时替换成自己的 APPID 和 APPSecret

gfeljm.tianqiapi.com/api?unescap…

二、前端 HTML+JS+Fetch请求

1. 基础fetch请求页面

使用fetch方法发起请求,特别注意每一步返回的数据是否为Promise,需要使用async和await消除回调

const appid = 68621484
const appsecret = `XXXXX`
let  URL  = `http://gfeljm.tianqiapi.com/api?unescape=1&version=v63&appid=${appid}&appsecret=${appsecret}`获取(URL)async function 获取(URL){let 响应  = await fetch(URL)let 数据  = await 响应.json()return 数据
}

注意这个页面通过浏览器 查看网络请求XHR

 

2. 完整静态HTML页面

制作一个简易的HTML页面,显示出关键数据。更多数据需要参考接口文档。

 使用Fetch发起请求,获得数据后,使用innerHTML属性替换掉元素内容。
同时使用模版字符串,没有使用任何CSS样式。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>fetch请求</title>
</head>
<body><div id="A"></div><script>const appid = 68621484
const appsecret = `fZnW1ikK`
let  URL  = `http://gfeljm.tianqiapi.com/api?unescape=1&version=v63&appid=${appid}&appsecret=${appsecret}`main()async function  main(){let data = await 获取(URL)const listItems = data.hours.map(hour => `<li>时间:${hour.hours}<br>天气状况:${hour.wea}<br>天气图标:<img src="images/weather_icons/${hour.wea_img}.png" alt="${hour.wea}"><br>温度:${hour.tem}°C<br>风向:${hour.win}<br>风速:${hour.win_speed}<br>能见度:${hour.vis} km<br>空气质量:${hour.aqi}<br></li>`).join('');A.innerHTML = `<h2>城市:${data.city} (${data.cityEn})</h2>国家:${data.country} (${data.countryEn})<br>日期:${data.date} ${data.week}<br>更新时间:${data.update_time}<br>天气状况:${data.wea}<br>天气图标:<img src="images/weather_icons/${data.wea_img}.png" alt="${data.wea}"><br>当前温度:${data.tem}°C<br>最高温度:${data.tem1}°C<br>最低温度:${data.tem2}°C<br>风向:${data.win}<br>风速:${data.win_speed} (${data.win_meter})<br>湿度:${data.humidity}<br>能见度:${data.visibility}<br>气压:${data.pressure} hPa<br>降雨量:${data.rain_pcpn} mm<br>空气质量指数:${data.air}<br>PM2.5:${data.air_pm25}<br>空气质量等级:${data.air_level}<br>空气质量提示:${data.air_tips}<ul>${listItems}</ul>`;console.log(data)
}async function 获取(URL){let 响应  = await fetch(URL)let 数据  = await 响应.json()return 数据
}</script>
</body>
</html>

3. 补充CSS样式

 

ul{display: flex;flex-wrap: wrap;list-style: none;
}li{width: 300px;background-color: palegreen;margin: 10px;padding: 15px;border-radius: 50%;text-align: center;
}span{padding: 15px;background-color: orange;cursor: pointer;
}

4. 补充JS多城市查询

4.1 增加对应的HTML代码

4.2 增加对应的JS代码

 

三、项目图示总结

使用Fetch和async/await极大的简化了前端代码。后端数据接口就是一个URL地址。 整个后端具备云服务的特征,可以视作云服务数据接口,如图所示

 

四、天气接口

1.易客云天气API 推荐:⭐⭐⭐⭐⭐

对新手比较友好。 tianqiapi.com/

2.高德地图 需要注册开发者(推荐:⭐⭐⭐)

lbs.amap.com/api/webserv…

3.心知天气(推荐:⭐)

免费的API数据只有一行,且文档藏得太深难用 www.seniverse.com/

欢迎大家提供更多更好的天气API。

本文转载于:https://juejin.cn/post/7441560184010014735

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

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

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

相关文章

从零开始:deepseek本地部署教程,小白也能玩转!

最近deepseek非常火热,很多小伙伴想要使用它,但是却找不到入口,即使找到了在线网页端,也会在意自己的数据的安全性和隐私保护,特别是在处理敏感信息或机密数据,不想让其他人在使用浏览器的时候看到这些信息。 那么将deepseek部署到本地就可以很好解决这一问题,怎么部署呢…

SoK: History is a Vast Early Warning System: Auditing the Provenance of System Intrusions 论文笔记

简介 审计能力就被认为是任何资源共享系统中检测违规和渗透尝试的关键。Lampson 将访问控制“黄金标准”的三大支柱确定为授权、身份验证和审计。当授权和身份验证等主动安全措施失败时,审计构成了所有形式的反应性安全的基础,使系统防御者能够在入侵升级之前识别并减轻入侵 …

寻找通义灵码 AI 程序员 {头号玩家} ,体验 QwQ-Plus、DeepSeek 满血版的通义灵码

2025 年 1 月,通义灵码 AI 程序员全面上线,同时支持 VS Code、JetBrains IDEs,是国内首个真正落地的 AI 程序员。近期,通义灵码能力再升级全新上线模型选择功能,目前已经支持 QwQ-plus、DeepSeek 满血版模型,用户可以在 VSCode 和 JetBrains 里搜索并下载最新通义灵码插件…

从“零”到“联”:Profinet转Ethernet/IP网关搞定发那科机器手臂

从“零”到“联”:Profinet转Ethernet/IP网关搞定发那科机器手臂 在电子制造行业,产品更新换代迅速,对生产效率和精度的要求近乎严苛。一家专注于智能手机零部件制造的企业,面临着生产流程优化与设备协同的重大挑战。传统设备多采用EthernetIP协议,而新引入的发那科机器人…

聊聊突然爆火的Manus

昨天号称全球首款通用人工智能的产品Manus横空出世,开始全网刷屏。我看到很多技术社群的讨论话题从DeepSeek变成了Manus,甚至网上已经有人在卖Manus的资料和邀请码,流量属性拉满。 Manus号称支持直接交付完整的任务结果(官网有展示Use case),还宣称在GAIA评分中超越了OpenA…

Linux 交叉编译(toolchain) ARM 版openssl-1.0.0s的libssl.so 库

前言全局说明一、说明 环境: ubuntu 18.04二、下载源码: 官网: https://openssl-library.org 源码下载: https://openssl-library.org/source/old/1.0.0/index.html 下载,指定版本: https://github.com/openssl/openssl/releases/download/OpenSSL_1_0_0s/openssl-1.0.0s.ta…

DMS+ADB-PG支持一键部署QwQ-32B推理模型

3月6日,阿里云发布并开源全新推理模型通义千问QwQ-32B。现已支持在DMS+ADB上私域部署并与Dify打通使用。3月6日,阿里云发布并开源全新的推理模型通义千问QwQ-32B。通过大规模强化学习,千问QwQ-32B在数学、代码及通用能力上实现质的飞跃,整体性能比肩DeepSeek-R1。在保持强劲…

下载安装nvm

1.下载 网址:Release - nvm-windows:一个针对Windows平台的Node.js版本管理工具,是用Go语言编写的。 - GitCode 能不能打开看命,我是一直打不开,还是同事打开了发给我得 2.安装 找到nvm文件,找到setting.txt文件并打开复制下面代码,引用镜像:node_mirror: https://npm…

算法学习笔记:DS-区间类问题

DS:区间类问题 前言 对于区间或区间子区间问题,我们有一些惯用套路简化问题。 很多区间问题都可以转化为平面上矩形问题,用扫描线就可以解决。具体地,我们把区间 \([l,r]\) 抽象为平面内的点 \((l,r)\)。 同时我们可以使用反演的思路,考虑每个值对哪些询问如何造成贡献,而…

vuepress中引入本地资源

二次封装了一个jessibuca的组件 使用vuepress写文档一时不知如何引入jessibuca.js文件 于是搜索且验证以下可行方式 // .vuepress/config,js 文件 添加head配置项 module.exports = {...head: [[script, { src: /jessibuca-pro.js }]]... }jessibuca.js和decoder.js文件放在pub…

VMware ESXi 6.7 U3v (ESXi670-202503001) 下载

VMware ESXi 6.7 U3v (ESXi670-202503001) 下载VMware ESXi 6.7 U3v (ESXi670-202503001) 下载 VMware ESXi 6 Extend Support Release 🆓 🔄 请访问原文链接:https://sysin.cn/blog/vmware-esxi-6/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org2025-03-0…

Linux系统离线安装docker环境

1 下载docker的安装文件 下载地址:https://download.docker.com/linux/static/stable/x86_64/ 2 解压 tar -zxvf docker-18.06.3-ce.tgz 3 复制 cp ./docker/* /usr/bin 4 创建docker.service文件 cd /etc/systemd/system/ touch docker.service 5 编辑docker.service文件 vi …