使用豆包Marscode 创建了一个”天气预报“小应用

以下是「豆包MarsCode 体验官」优秀文章,作者一拳干爆显示器。

前言

本文介绍了我第一次使用我在MarsCode IDE制作了一款天气预报的应用
其中在正文的头部以及结语部分发表了我在MarsCode编程中的体验情况,而正文的中间主要是我项目制作的细节步骤

豆包MarsCode 初体验

豆包MarsCode IDE 是一个云端 AI IDE 平台。通过内置的 AI 编程助手,开箱即用的开发环境。
第一次使用我在MarsCode IDE制作了一款天气预报的应用,可以定义到用户的位置,生成出这个IP位置近几天的天气情况,也提供了几日天气的折线图,除此之外用户还可以切换城市来看到不同城市的天气情况
file

豆包MarsCode 简介

豆包MarsCode 是由字节跳动公司发布的一款智能开发工具,主要面向国内开发者免费开放。它基于豆包大模型构建,致力于用人工智能技术激发开发者的创造力。豆包MarsCode提供了两种产品形态:编程助手和Cloud IDE12。编程助手具备项目问答、代码补全、单测生成和Bug修复等功能,而Cloud IDE则提供了开发模板,允许开发者快速进入项目而无需运维本地环境。

在做项目时感受到的优点

从以下几个方面感受到它的优点:

AI辅助开发:MarsCode的AI编程助手能够提供代码补全、代码生成、代码解释、代码注释生成、单测生成和缺陷修复等功能,这极大地加快了开发速度,同时提高了代码质量。
file
开箱即用:豆包MarsCode提供了多种语言和框架的开发模板,这使得开发者可以快速启动项目,而无需花费时间在环境配置上。
file
资源弹性:由于是基于云端的资源,MarsCode可以根据项目需求动态调整资源,这为处理大型项目或需要高性能计算的项目提供了便利。

社区和共创计划:豆包MarsCode 通过与开发者社区的合作和共创计划,为开发者提供了一个学习和交流的平台,有助于提升个人技能和扩展专业网络。

效率提升:豆包MarsCode 的AI功能,如代码补全Pro和多轮自动修复,可以减少开发者在编码过程中的重复性工作,让他们能够更专注于解决复杂问题和创新。
file
错误减少:AI辅助的代码解释和缺陷修复功能可以帮助开发者更快地发现和修复潜在的错误,减少bug的产生。
file
个性化体验:MarsCode的AI助手可以根据用户的编码习惯和项目需求提供个性化的建议和支持,使得开发过程更加贴合个人的工作方式。可以一边编程一边看应用的内容
file
集成开发环境:MarsCode作为一个集成开发环境,集成了代码编辑、调试、测试等多种功能,使得整个开发流程更加流畅和高效。
file

创建一个项目

在node环境下创建一个vue项目

咱们的MarsCode中的Vue模板目前支持的语言是TS,那我们另寻出入,也期待豆包MarsCode出更多模板
file
豆包MarsCode在使用中非常方便,能大大提高我们写代码的效率

布局简约,让人赏心悦目,最右边更是蕴含大杀器AI助手,便于为我们解决问题
在编写时会预测我们需要输入的内容,如果需要则一键Tab快速输出
file
终端输入npm create vue@latest来创建我们的vue项目
file

选上路由

开始创建我们的天气预报应用吧
和上一篇文章一样,先将默认的东西给删去

在router中新建一个页面的入口文件index.vue。并将默认路径的路由指向他
file
在assets中新建reset.css将该css引入全局main.js,省去了其他组件的部分样式编写

这是需要实现的几个内容

file

在更新时间上

创建一个名为 now 的常量,并将其初始化为一个空的 ref 对象。这样做是为了在 Vue 的组件中跟踪一个特定的值,并在需要时更新它。
file
setInterval 函数用于设置一个定时器,它会按照指定的时间间隔重复执行一个函数或代码片段。在你提供的代码段中,setInterval(() => {…}, 1000) 表示每过 1000 毫秒(即 1 秒)就会执行一次括号内的匿名函数。

使用 toLocaleTimeString 方法将其格式化为一个字符串。这个字符串包含当前时间的小时、分钟和秒。然后,这个字符串被赋值给 now.value,从而更新了 now ref 对象的值。

接下来的城市、天气、温度等等数据都可以使用高德地图中公开使用的JS API中调用

除了使用到高德地图以外还可以问问AI,什么API支持这些查询
file

1、跟着官方文档去注册并创建自己的key

2、接着在index.html中引入自己的key,按照官方文档走准没错

你猜怎么着,高德地图自带定位和天气的插件供我们使用,大快人心
file

定位IP地址

先使用定位插件,通过IP定位来获取一下用户的大概位置
file
看看官方文档中的代码给我们输出了什么内容

const state = reactive({city: '',today: {},
})
AMap.plugin('AMap.CitySearch', function () {var citySearch = new AMap.CitySearch()citySearch.getLocalCity(function (status, result) {if (status === 'complete' && result.info === 'OK') {// 查询成功,result即为当前所在城市信息console.log(result);state.city = result.city}})
})

file

其中的city便是我们需要的定位信息,将信息打包传递给我们新建的响应式容器state

查询天气

有了城市信息之后呢就开始查询天气

其中官方文档给出的例子“杭州市”我们便可以直接替换成为state.city

也可以直接将对象getWeather传入AMap中,在定位完成后便直接查询天气,再将得到的state.city作为参数传入getWeather中
file
打印一下输出的data,看看我们需要从中拿到的参数名叫什么
file
简直欣喜若狂,这么多东西都是我们需要的,把他们全部打包放进state.today中去

然后更改html让他们实时输出

<div class="nav"><div class="time">{{ now }}</div><div class="city" @click="state.show = true">切换城市</div></div><div class="city-info"><p class="city">{{state.city}}</p><p class="weather">{{ state.today.weather }}</p><h2 class="temp"><em>{{ state.today.temperature }}</em>℃</h2><div class="detail"><span>风力:{{ state.today.windPower }}级</span> |<span>风力:{{ state.today.windDirection }}风</span> |<span>空气湿度:{{ state.today.humidity }}%</span></div></div>

未来天气预报

往下一翻你会看到还有未来的天气预报功能,这可太好了,并且发现这串代码和上面的代码十分相似,那么只需要提取出需要的代码片段放入getWeather对象中
file

weather.getForecast(city, function (err, data) {console.log(err, data)future.today = data

放入这段代码即可,再看看输出了什么内容,将我们需要的内容打包到future中去

file
给了我们未来四天的天气情况,通过调用这些封装到future函数中的属性可以输出我们需要的内容
file
这样就实现了用户查看当地的天气情况的功能

查询其他地区天气

使用Vant工具库来实现切换城市的功能
file
安装Vant
file
引入我们要使用的组件

记得在main.js中引入组件的样式import ‘vant/lib/index.css’;

初始化省市区组件时,需要通过 area-list 属性传入省市区数据。

html中加入

引入给出的例子areaList,可以选取到需要的地区

但全国城市太多不方便全都打上去,vant也贴心的为我们准备了全国的数据

安装 @vant/area-data npm包来引入中国省市区数据

控制台输入npm i @vant/area-data

删去areaList函数

file
得到这么一个形式,但我们的天气预报不需要精确到每一个区,只需要得到一个市的天气
file

传递地址信息

点击确定,将选定的地区的值传递给state.city 和getWeather()

先来看看点确定按钮时会给出的三个值,选出我们需要的值再传递
file
可以看出我们需要的数据是selectedOptions[1].text

将选定的地区的值传递给state.city 和getWeather()
file

添加反馈组件

添加反馈组件,点击切换城市及确定和取消按钮的反馈

这里引用到Vant中的ActionSheet 动作面板
file

<van-action-sheet v-model:show="state.show"><div class="content"><van-area title="地区" :area-list="areaList" :columns-num="2" v-on:confirm="selectCity" v-on:cancel="state.show = false"/></div></van-action-sheet>

设置只有在state.show的值为ture时才展现出来

于是为切换城市的div添加点击事件 @click="state.show = true
为取消按钮添加点击事件 @click="state.show = false
添加state.show 的默认值为false

file

添加折线图

为了丰富我们的页面内容可以添加折线图来更加直观的看看未来几天的天气的走向

没有头绪的时候问问AI吧

我不知道是否有组件库能帮我完成数据的视图,于是我便可以问问AI有什么方法或者库能实现 ,于是AI给我推荐了许多方法能够使用
file
file
使用到了Apache ECharts,可视化图表的库

安装Apache ECharts

终端输入:npm install echarts
index.vue中引入:import * as echarts from ‘echarts’;
按照步骤来就行了

在页面上渲染出效果

<div class="echarts-wrap" ref="echartsWrap"></div>

从getWeather中获取数据

nextTick(() => {initEacher(future.today.forecasts.map(item => item.dayTemp),future.today.forecasts.map(item => item.nightTemp))});

在 Vue 更新 DOM 之后被调用。这个回调函数通过map 方法处理了 future.today.forecasts 数组中的每个元素,获得了日间和夜间温度,并将这些温度值作为参数传递给 initEacher 函数。

定义initEacher 函数。它接收两个参数: dayTemps 和 nightTemps,它们分别是从 future.today.forecasts 数组中映射出来的日间和夜间温度值的数组。

设置折线图的基本内容(X和Y轴的内容、标题)并将参数带入

const echartsWrap = ref(null)
const initEacher = (arr1,arr2) =>{//console.log(echartsWrap.value);let myCharts = echarts.init(echartsWrap.value);myCharts.setOption({title: {text: '天气预报'},tooltip: {},legend: {data: ['温度']},xAxis: {type: 'category',data: ['今天', '明天', '后天', '大后天']},yAxis: {},series: [{name: '白天温度',type: 'line',data: arr1},{name: '夜晚温度',type: 'line',data: arr2}]})

注意:在移动端得设置一下图表的样式大小,要不然可以无法加载出

.echarts-wrap{width: 100%;height: 50vh
}

那么应用的基本功能就全部完成啦

为它美美的设计样式吧

<style lang="css" scoped>
.container{min-height: 100vh;/* background-color: rgb(73, 230, 146); */background-image: url('/cloudide/workspace/tianqiyubao/tianqi/src/assets/8c31ff6bca2dbd1180907f61ae1da66.jpg');/* background-size: cover; *//* opacity: 0.7; */color: rgb(255, 255, 255)}
.nav{display: flex;justify-content: space-between;padding: 20px;
}
.city-info{text-align: center;
}
p{margin: 20px;
}
.temp{font-size: 34px;margin: 10px;em{font-size: 50px;}
}
.future{margin-top: 40px;padding: 0 10px;.group{height: 44px;line-height: 44px;background-color: rgb(255, 255, 255,0.5);padding: 0 10px;margin-bottom: 10px;border-radius: 20px;}
}
.echarts-wrap{width: 100%;height: 50vh;
}
</style>

结语

豆包MarsCode 初体验是很不错的

很喜欢这种简约的风格
file
而且科技感十足 有什么问题都可以快速得问AI 就比如当你思路全无时,不知道是否有组件或者公开库能够实现需要的功能时,AI能告诉你方法
file
让我效率非常高 许多代码都能一键生成出来
file
可以一边编程一边看应用的内容
file
但在使用途中也遇上一些小bug,比如run时的域名总会跳转至创建的其他项目的域名,以及在选择颜色,使用鼠标的点击RGB时出现无法选中的情况,当然了一款好的产品是需要慢慢雕琢的,期待咱们的MarsCode越来越强大

在制作该应用时用上了三个组件库:

高德开放平台 | 高德地图API (amap.com)

Vant 4 - 轻量、可定制的移动端组件库 (vant-ui.github.io)

Apache ECharts

本文由博客一文多发平台 OpenWrite 发布!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

SPWM正弦波控制

目录 前言一、PWM简介二、SPWM基本原理2.1 SPWM简介2.2 SPWM控制方法2.2.1 直接计算法2.2.2 自然采样法2.2.3 谐波法 2.3 SPWM的注意点2.3.1 死区效应2.3.2 过调制2.3.3 转矩与转速控制 三、SPWM实现四、补充 前言 本文主要介绍SPWM原理及C语言单片机的实现 一、PWM简介 PWM是P…

Vue 响应式监听 Watch 最佳实践

一. 前言 上一篇文章我们学习了 watch 的基础知识&#xff0c;了解了它的基本使用方法及注意事项&#xff0c;本篇文章我们继续了解在Vue 中 响应式监听 watch 的妙用。了解 watch 的基础使用请参考上一篇文章&#xff1a; 详解 Vue 中 Watch 的使用方法及注意事项https://bl…

ARM单片机的中断详细过程(重要)

ARM单片机的中断详细过程&#xff08;重要&#xff09; 一、ARM异常中断 ARM的异常&#xff08;中断源&#xff09;总共分为三类&#xff08;八种&#xff09;&#xff1a; 三类&#xff1a; &#xff08;1&#xff09;执行指令引起的直接异常&#xff1a;软件中断&#xff…

0920作业+思维导图

一、 写一个shell脚本&#xff0c;将以下内容放到脚本中&#xff1a; 在家目录下创建目录文件&#xff0c;dirdir下创建dir1和dir2把当前目录下的所有文件拷贝到dir1中&#xff0c;把当前目录下的所有脚本文件拷贝到dir2中把dir2打包并压缩为dir2.tar.xz再把dir2.tar.xz移动到…

13.第二阶段x86游戏实战2-动态模块地址

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

LabVIEW项目编码器选择

在LabVIEW项目中&#xff0c;选择增量式&#xff08;Incremental Encoder&#xff09;和绝对式&#xff08;Absolute Encoder&#xff09;编码器取决于项目的具体需求。增量式编码器和绝对式编码器在工作原理、应用场景、精度和成本等方面存在显著差异。以下从多方面详细阐述两…

MySql数据库---单表查询,高级查询,外键约束,多表关系,建表原则

思维导图 模糊查询 select * from 表名 where 列名 like 匹配符; 符号: _ 表示一个任意字符 符号: % 表示0或者多个任意字符 # &#xff08;1&#xff09;查询商品名称含有"香"字的所有商品信息&#xff1b; select * from product where pname like %香%; # &#x…

【车联网安全】车端知识调研

一、CAN总线&#xff1a; 1、定义&#xff1a; CAN 总线相当于汽车的神经网络&#xff0c;连接车内各控制系统,其通信采用广播机制&#xff0c;各连接部件均可收发控制消息&#xff0c;通信效率高&#xff0c;可确保通信实时性。当前市场上的汽车至少拥有一个CAN网络&#xff0…

Thinkphp(TP)

1.远程命令执行 /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami 2.远程代码执行 /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[1][]…

多模态文档编辑器flowmix/docx,9月更新复盘!

嗨, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践&#xff0c;也陆陆续续设计并开发了多款可视化搭建产品&#xff0c;比如&#xff1a; H5-Dooring&#xff08;页面可视化搭建平台&#xff09;V6.Dooring&#xff08;可视化大屏搭建平台&#xff09;橙…

js发送邮件至指定邮箱功能实现方式和技巧?

js发送邮件至指定邮箱的教程&#xff1f;怎么使用Node.js发信&#xff1f; 无论是用户反馈、订单确认还是密码重置&#xff0c;js发送邮件至指定邮箱的需求无处不在。AokSend将深入探讨js发送邮件至指定邮箱的实现方式和技巧&#xff0c;帮助开发者更好地理解和应用这一功能。…

html TAB、table生成

1. 代码 <!DOCTYPE html> <head> <meta charset"UTF-8"> <title>Dynamic Tabs with Table Data</title> <style> /* 简单的样式 */ .tab-content { display: none; border: 10px solid #ccc; padding: 30px; mar…

道路车辆功能安全 ISO 26262标准(3)—概念阶段

写在前面 本系列文章主要讲解道路车辆功能安全ISO26262标准的相关知识&#xff0c;希望能帮助更多的同学认识和了解功能安全标准。 若有相关问题&#xff0c;欢迎评论沟通&#xff0c;共同进步。(*^▽^*) 1. 道路车辆功能安全ISO 26262标准 3. ISO 26262-3 概念阶段 我们来…

浙江欧瑞雅装饰材料有限公司:全屋定制,为爱家增添无限温馨!

浙江欧瑞雅装饰材料有限公司&#xff1a;全屋定制&#xff0c;为爱家增添无限温馨&#xff01;在追求生活品质与个性化的今天&#xff0c;家已不仅仅是一个居住的空间&#xff0c;更是情感的寄托和个性的展现。浙江欧瑞雅装饰材料有限公司&#xff0c;以其专业的全屋定制服务&a…

论文阅读 - SWATTING Spambots: Real-time Detection of Malicious Bots on X

https://web.archive.org/web/20240523035749id_/https://dl.acm.org/doi/pdf/10.1145/3589335.3651564 目录 ABSTRACT INTRODUCTION METHODOLOGY 3 RESULTS ABSTRACT 在 X&#xff08;前身为 Twitter&#xff09;等社交网络平台上&#xff0c;垃圾邮件机器人的活动日益…

html中为div添加展开与收起功能(div折叠)

1、添加样式 <style type"text/css">.mask {position: absolute;bottom: -5px;color: #4b83f0;font-weight: 700;font-size: 14px;text-align: center;height: 80px;left: 0;right: 0;background-image: -webkit-gradient(linear, left top, left bottom, from…

机械零件检测系统源码分享

机械零件检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

零基础入门AI大模型应用开发——第三天:使用python实现问答机器人

一、简介 问答机器人是一种能够理解用户提问并提供相关答案的程序。它可以用于各种场景&#xff0c;如客户支持、在线教育、信息检索等。用户通过自然语言输入问题&#xff0c;机器人则通过分析问题并检索相关信息来提供回答。 使用什么技术实现的&#xff1f; 自然语言处理&…

电源设计的艺术:从底层逻辑到工程实践

在电子工程的世界里&#xff0c;电源设计是核心中的核心。它不仅是电子设备的能量源泉&#xff0c;更是整个系统稳定运行的基石。随着科技的不断进步&#xff0c;电源设计的要求也越来越高&#xff0c;从效率、稳定性到体积、成本&#xff0c;每一个维度都是工程师们不断追求的…

Github 2024-09-21Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-09-21统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Move项目1JavaScript项目1Deno: 现代JavaScript和TypeScript运行时 创建周期:2118 天开发语言:Rust, JavaScript协议类型:MIT Lic…