echarts+node+ajax实现时间天气服务器_echarts气象图
创始人
2024-11-06 15:35:44
0

2.实现

2.1实现准备

在这里我通过一款软件,来实现准备设计
来实现项目的计划样子。软件就是Pixos
在这里我希望你们在进行一个项目的设计之前
一定要做一些前提准备,设计一个草图

前期设计

2.2搭建前台页面

关于这个前端页面,相信各位的实力,应该不难
搭建好的前端页面如下:

搭建好的前端页面

2.3搭建后台服务器
2.3.1搭建后台

在项目中下载express npm i express --save

//搭建好了一个本地服务器 //端口号为8000 const express=require('express') const fs=require('fs') const app=express()  app.listen(8000,()=>{     console.log("开启成功") })  
2.3.2后台处理要发送的数据

在后台需要发送的数据有两种
1.实时的年月日,以及当前的时间
2.实时的七天天气信息

2.3.2.1实时时间

通过实例化Date()函数就可以实现。
然后通过对应的函数获得时间信息。
然后对数据进行JSON化,发送时处理数据格式

在这里我们会设置一个接口,用于前端获取数据。
/timeDate接口

app.get('/timeDate',(req,res)=>{ 	//用于处理跨域问题     res.setHeader('Access-Control-Allow-Origin', '\*');     //响应头     res.setHeader('Access-Control-Allow-Headers', '\*');    //实例化内置Date()库     var time=new Date()     //得到年     const year=time.getFullYear()     const mouth=time.getMonth()+1     const day=time.getDate()     const hour=time.getHours()     const min=time.getMinutes()     const second=time.getSeconds()     //将数据json化,传输数据     const TimeDate={year,mouth,day,hour, min,second}     //向客户端发送数据     res.send(JSON.stringify(TimeDate)) })  
2.3.2.2七天天气信息

这个七天的信息都是通过网上数据得到的。

在官网天气官网你能获取每天的实时信息。
你也可以通过我创建的数据接口获得数据接口
由于考虑到请求的时间问题,我将数据存储在data.json中
用于来提高数据请求与发送的时间。

实现的就是通过fs模块读取数据,然后来得到数据,
创建接口,向前端发送数据

天气信息
然后就是后台代码:

fs.readFile('./data.json',(err,data)=>{     if(err) return console.log('err')     let result=JSON.parse(data)     app.get('/weatherDate',(req,res)=>{          res.setHeader('Access-Control-Allow-Origin', '\*');         //响应头         res.setHeader('Access-Control-Allow-Headers', '\*');          res.send(result)      }) })  
2.4前端处理获取的数据
2.4.1时间数据

我们要做的就是获得到时间数据。
将其展示到对应的位置。
1.时钟表 2.时间显示

先得到对应的DOM结构,然后设置js与css样式

处理流程就是:
绑定点击事件==》通过ajax获取接口数据
==》得到对应的DOM接口 =+=》插入数据,设置css样式

/\*渲染时钟\*/ //获得时,分,秒的DOM结构 const hours=document.querySelector(".hour") const mins=document.querySelector('.min') const seconds=document.querySelector('.seconds') //获得六个空地方的DOM结构 const item1=document.querySelector('.item1') const item2=document.querySelector('.item2') const item3=document.querySelector('.item3') const item4=document.querySelector('.item4') const item5=document.querySelector('.item5') const item6=document.querySelector('.item6')  //绑定点击事件 const bottom=document.getElementById('bottom')  bottom.addEventListener('click',timeshow)  function timeshow(){     let xhr=new XMLHttpRequest()     xhr.open("GET",'http://localhost:8000/timeDate')     xhr.send()      xhr.onreadystatechange = function () {         if (xhr.readyState === 4) {             if (xhr.status >= 200 && xhr.status < 300) {                 //对请求的数据结构化                 let result =JSON.parse(xhr.response);                  //得到时                 let hour = result.hour                 const hourDeg = (hour / 12) \* 360 + 90                 hours.style.transform = `rotate(${hourDeg}deg)`;                  //得到分                 let min = result.min                 const minDeg = (min / 60) \* 360 + 90                 mins.style.transform = `rotate(${minDeg}deg)`                  //得到秒                 let second = result.second                 const secondDeg = (second / 60) \* 360 + 90                 seconds.style.transform = `rotate(${secondDeg}deg)`                                  //将数据插入指定的位置                  item1.innerHTML =result.year                  item2.innerHTML =result.mouth                  item3.innerHTML = result.day                  item4.innerHTML =result.hour                  item5.innerHTML = result.min                  item6.innerHTML = result.second             } else {                 console.log("err")             }         }     }  }  

在这里插入图片描述

2.4.2天气信息

我只是获取了天气信息的data部分。
需要的数据就是。
1.七天的时间,以及他们对应的最高,最低温度
2.七天的温度,以及对应的温馨提示信息。
时间的高低我用柱状图表示。
温度及提示用饼图表示

设置echarts图表时,最重要的时data数据
,其他的辅助信息可根据管网提示来设置

2.4.2.1时间数据处理

获得接口数据,得到对应的值

let xhr=new XMLHttpRequest()     xhr.open("GET",'http://localhost:8000/timeDate')     xhr.send()      xhr.onreadystatechange = function () {         if (xhr.readyState === 4) {             if (xhr.status >= 200 && xhr.status < 300) {  var result=JSON.parse(xhr.response)  var data=result.data  console.log(data)  //由于得到的数据是数组,  //而option的data数据的格式是json格式。  //所以需要将数据加工  const maxMINArr=data.map((item)=>{        return {product:item.date,最低温度:item.tem1,最高温度:item.tem2}   }) } //echarts中的option的属性设置  dataset: {        dimensions: ['product', '最高温度', '最低温度'],         source:maxMINArr      },   

在这里插入图片描述

2.4.2.2温度及提示

需要注意的是由于得到的数据是
数组,而echarts的option设置的数据
需要的是json类的形式,所以
需要对数据json化

let xhr=new XMLHttpRequest()     xhr.open("GET",'http://localhost:8000/timeDate')     xhr.send()      xhr.onreadystatechange = function () {         if (xhr.readyState === 4) {             if (xhr.status >= 200 && xhr.status < 300) {  var result=JSON.parse(xhr.response)  const dataArr=data.map(item=>{      return {value:item.tem,name:item.date,level:item.air_level,tips:item.index[3]}  })  //echarts中的option的属性设置 tooltip:{        show:true,        //提示信息json化数据       formatter: function(arg){ 	 return arg.data.name+' : '+arg.data.value+'c'+' : '+arg.data.level+' : '+arg.data.tips.desc       }  },   ![img](https://img-blog.csdnimg.cn/img_convert/7edc62c819521a09d3953e752b91a255.png) ![img](https://img-blog.csdnimg.cn/img_convert/86a8ed9acc3e6fbf3c12db4a4892043a.png) ![img](https://img-blog.csdnimg.cn/img_convert/7e6343b80f4109a40c7e0e3fee88dd51.png)  **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**         //提示信息json化数据       formatter: function(arg){ 	 return arg.data.name+' : '+arg.data.value+'c'+' : '+arg.data.level+' : '+arg.data.tips.desc       }  },   [外链图片转存中...(img-Vx9iv8Q4-4701983205592)] [外链图片转存中...(img-xQQPvkHf-4701983205593)] [外链图片转存中...(img-pJs24MzE-4701983205593)]  **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**  

相关内容

热门资讯

wepoke辅助插件(透视)w... wepoke辅助插件(透视)wepoke ai辅助(详细辅助切实教程)原来存在有挂(攻略ai代打)1...
微扑克德州专用辅助器(微扑克)... 微扑克德州专用辅助器(微扑克)wpk微扑克外挂事件(透视)一直是有挂(详细辅助微扑克教程)1、上手简...
wepoke ai辅助(透视)... wepoke ai辅助(透视)wepokewopoker透明挂(详细辅助解说技巧)好像存在有挂(科普...
微扑克全自动机器人(微扑克)微... 微扑克全自动机器人(微扑克)微扑克插件(透视)真是有挂(详细辅助教你教程)1、让任何用户在无需微扑克...
wepower有外 挂(透视)... wepower有外 挂(透视)wepoke软件规律(详细辅助揭秘教程)一直存在有挂(攻略的确有挂)w...
微扑克辅助挂(微扑克)微扑克机... 微扑克辅助挂(微扑克)微扑克机制技巧(透视)一直真的是有挂(详细辅助透明挂教程)1、用户打开应用后不...
wepoke辅助技巧(透视)w... wepoke辅助技巧(透视)wepoke真的(详细辅助新版2025教程)一直是有挂(可靠ai代打的胜...
微扑克有辅助挂(微扑克)微扑克... 微扑克有辅助挂(微扑克)微扑克ai技术(透视)好像是有挂(详细辅助软件教程)1、用户打开应用后不用登...
wepoke有没有挂(透视)w... wepoke有没有挂(透视)wepoke怎么使用模拟器(详细辅助可靠教程)确实是真的有挂(科普有挂)...
微扑克辅助挂(微扑克)微扑克真... 微扑克辅助挂(微扑克)微扑克真的有挂吗(透视)其实真的有挂(详细辅助曝光教程)1、全新机制【微扑克辅...