vue3学习:查询城市天气预报案例(vite组合式实现)

devtools/2024/11/12 16:27:02/

前面的学习中,实现过网页版的查询城市天气预报,今天新建了一个vite项目来实现,并且使用element-plus组件,把网页效果适当美化了一下,运行效果如图所示。

步骤如下:

一、新建项目

步骤如下:
1.以管理员方式运行VSCode,终端/新建终端,在终端中运行命令npm create vite@latest
2.输入项目名称weather ,选项设置选择Vue、Javascript。
3.依此执行下面命令

cd weather
npm install
npm run dev

(4)打开网址 http://localhost:5173/,看到如下图所示的网页,说明新建项目成功。
在这里插入图片描述
二、安装项目中用到的组件
在该项目中,用到了axios和element-plus,需要进行安装(需保持网络畅通),依次在终端中执行如下命令。
1.安装axios
npm install axios --save
2.安装element-plus
npm install element-plus --save
3.查看是否安装成功。打开package.json文件,如果dependencies出现如下选项,说明安装成功。
在这里插入图片描述

三、在App.vue中输入以下代码

1.template部分

程序初运行时,只显示一个输入框和查询按钮,这一部分使用element-plus制作,element-plus的具体使用可去官网查询。
在这里插入图片描述

<template><div id="container"><div id="search"><el-input v-model="cityName" placeholder="请输入城市名" class="inputText" /><el-button type="primary" @click="handleWeather(cityName)">查询</el-button></div><div class="weather"><div v-if="weatherInfo.city != ''"><h3><span>{{ weatherInfo.city }}</span>天气预报</h3><p><span>日期:</span><span>{{ weatherInfo.date }} {{ weatherInfo.week }}</span> </p><p><span>更新时间:</span><span>{{ weatherInfo.update_time }}</span></p><p><span>天气:</span><span>{{ weatherInfo.wea }}</span></p><p><span>空气质量:</span><span>{{ weatherInfo.air_level }},</span><span v-if="weatherInfo.air_level == ''">适宜出行</span><span v-else>不适合出行。</span></p><p><span>现在温度:</span><span>{{ weatherInfo.tem }}&#8451;</span></p><p><span>今日温度:</span><span>{{ weatherInfo.tem2 }}&#8451;~{{ weatherInfo.tem1 }}&#8451;</span></p><p><span>风向风力:</span><span>{{ weatherInfo.win }},{{ weatherInfo.win_speed }}</span></p><p><span>降雨量:</span><span>{{ weatherInfo.rain_pcpn }}</span></p></div></div></div>
</template>

2.css部分

<style scoped>
.inputText {width: 240px;
}.weather p span:nth-child(1) {width: 100px;text-align: right;display: inline-block;
}
</style>

3.script部分

javascript"><script>
import axios from 'axios'
import { ref } from 'vue'
import { reactive } from 'vue'
import { toRefs } from 'vue'export default {name: 'App',setup() {const cityName = ref('')const infoData = reactive({weatherInfo: {city: '',date: '',week: '',update_time: '',wea: '',tem: '',tem1: '',tem2: '',win: '',win_speed: '',air_level: '',// air_tips:'',rain_pcpn: '',}})//create创建axios实例const instance = axios.create({baseURL: 'http://gfeljm.tianqiapi.com/api?unescape=1&version=v63&appid=?????&appsecret=?????'})//添加请求拦截器instance.interceptors.request.use((config) => {return config;}, (error) => {console.log("请求出错")           //请求出错时的处理return Promise.reject(error);})//添加响应拦截器instance.interceptors.response.use((response) => {if (response.status === 200 && response.data) {//响应成功时的处理console.log("响应成功")}return response}, (error) => {console.log("响应失败")              //响应失败时的处理return Promise.reject(error.response.data)})//async/await写法const handleWeather = async (name) => {cityName.value = nameconst res = await instance.get("/api",{params: {unescape: 1,version: 'v63',appid: '?????',   //自己注册获得appsecret: '?????',  //自己注册获得city: name}})console.log(res)infoData.weatherInfo.city = res.data.cityinfoData.weatherInfo.date = res.data.dateinfoData.weatherInfo.update_time = res.data.update_timeinfoData.weatherInfo.week = res.data.weekinfoData.weatherInfo.wea = res.data.weainfoData.weatherInfo.tem = res.data.teminfoData.weatherInfo.tem1 = res.data.tem1infoData.weatherInfo.tem2 = res.data.tem2infoData.weatherInfo.win = res.data.wininfoData.weatherInfo.win_speed = res.data.win_speedinfoData.weatherInfo.air_level = res.data.air_levelinfoData.weatherInfo.rain_pcpn = res.data.rain_pcpn}return {cityName,infoData,...toRefs(infoData),handleWeather}}
}
</script>

因为要用到天气信息,所以需要注册成为气象数据接口服务平台用户。这里使用的是“天气API”,该网站网址为http://www.tianqiapi.com/,如何注册可以参考《输入城市名称查询该城市天气》


http://www.ppmy.cn/devtools/133060.html

相关文章

SpringBoot健身房管理:敏捷与自动化

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了健身房管理系统的开发全过程。通过分析健身房管理系统管理的不足&#xff0c;创建了一个计算机管理健身房管理系统的方案。文章介绍了健身房管理系统的系统分析部…

终端NuShell git权限异常处理

使用nushell git,关联老的秘钥文件 D:\phpstudy_pro\WWW\xmh\backend|10-312> mkdir d:\Users\Administrator\.ssh PC-20240719ZOSM||2411063145840 D:\phpstudy_pro\WWW\xmh\backend|10-312> cp -r c:\U…

初学Java基础---Day21---正则表达式,日期类,Math类,Random类,System类,Runtime类,大数值运算类,

一&#xff0c;正则表达式 理解&#xff1a; 符合某个语句规范的字符串 案例&#xff1a; //案例&#xff1a;把一个字符串中带电话号码替换成 130****1111 的形式String str "小红 13012341111 小绿15112342222 小黑13912343333";//分析&#xff1a;电话号码可以…

海外云手机在出海业务中的优势有哪些?

随着互联网技术的快速发展&#xff0c;海外云手机已在出海电商、海外媒体推广和游戏行业都拥有广泛的应用。对于国内的出海电商企业来说&#xff0c;短视频引流和社交平台推广是带来有效流量的重要手段。借助云手机&#xff0c;企业能够更高效地在新兴社交平台上推广产品和品牌…

Objective-C 1.0和2.0有什么区别?

Objective-C ObjC比较小众&#xff0c;在1980年左右由Stepstone公司的Brad Cox和Tom Love发明。后来NeXT公司获得ObjC语言使用权&#xff0c;再后来到1996年NeXT被苹果公司收购也变成苹果公司使用&#xff0c;Mac市场占有率本身就不高&#xff0c;ObjC没有太多程序员。在移动互…

【人工智能训练师】7 大数据处理与应用

大数据处理与应用&#xff08;Hive技术&#xff09;(0/100分) 1.本地开发工具连接Hadoop集群 1.本次环境版本为Hadoop2.7.7&#xff0c;对应eclips插件存放于云主机master:/usr/package277/中。 2.本机映射名为hadoop000&#xff0c;云主机Hadoop/Hive的hosts文件中IP需要修改…

超子物联网HAL库笔记:定时器[基础定时]篇

超子物联网 HAL库学习 汇总入口&#xff1a; 超子物联网HAL库笔记&#xff1a;[汇总] 写作不易&#xff0c;如果您觉得写的不错&#xff0c;欢迎给博主来一波点赞、收藏~让博主更有动力吧&#xff01; 一、资源介绍&#xff1a;STM32F103C8T6定时器资源介绍 高级定时器&#x…

CSRF详解

CSRF&#xff0c;全称是Cross-Site Request Forgery&#xff0c;即跨站请求伪造&#xff0c;也被称为“one click attack”或者session riding&#xff0c;是一种网络攻击方式。它允许攻击者诱导用户在已登录的Web应用程序上执行非预期的操作。 工作原理CSRF攻击通常涉及三个主…