欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node+js搭建時(shí)間服務(wù)器的思路詳解

 更新時(shí)間:2022年07月25日 14:47:38   作者:言不及行yyds  
這篇文章主要介紹了node+js搭建時(shí)間服務(wù)器,通過本文的學(xué)習(xí)可以了解node的fs模塊怎么讀取數(shù)據(jù)及express怎么搭建服務(wù)器,設(shè)置數(shù)據(jù)接口的,需要的朋友可以參考下

時(shí)間服務(wù)器

時(shí)間服務(wù)器

1.思路準(zhǔn)備

1.1思路來源

這是在我的軟件老師給的期末課程設(shè)計(jì)
他要的是通過自己的知識(shí)儲(chǔ)備,來設(shè)計(jì)一個(gè)
前后端數(shù)據(jù)的展示與發(fā)送

1.2思路前提要求

1.搭建一個(gè)前臺(tái)頁面,要求簡單易懂
2.搭建服務(wù)器,用于向前端發(fā)送需要的數(shù)據(jù)
3.點(diǎn)擊數(shù)據(jù)展示,顏色改變,雙擊切換一些背景顏色

1.3技術(shù)要求

1.熟悉node,熟練掌握fs的使用
2.了解用express搭建后臺(tái)服務(wù)器,了解怎么向前臺(tái)發(fā)送數(shù)據(jù)
3.要有全局意識(shí),將需要改變的顏色設(shè)置用var()來設(shè)置顏色
4.熟悉數(shù)組的方法,了解怎么通過數(shù)組方法處理數(shù)據(jù)
5.了解echarts的使用
6.熟悉ajax的使用

2.實(shí)現(xiàn)

2.1實(shí)現(xiàn)準(zhǔn)備

在這里我通過一款軟件,來實(shí)現(xiàn)準(zhǔn)備設(shè)計(jì)來實(shí)現(xiàn)項(xiàng)目的計(jì)劃樣子。軟件就是Pixos
在這里我希望你們在進(jìn)行一個(gè)項(xiàng)目的設(shè)計(jì)之前一定要做一些前提準(zhǔn)備,設(shè)計(jì)一個(gè)草圖

2.2搭建前臺(tái)頁面

關(guān)于這個(gè)前端頁面,相信各位的實(shí)力,應(yīng)該不難
搭建好的前端頁面如下:

2.3搭建后臺(tái)服務(wù)器

2.3.1搭建后臺(tái)

在項(xiàng)目中下載express npm i express --save

//搭建好了一個(gè)本地服務(wù)器
//端口號為8000
const express=require('express')
const fs=require('fs')
const app=express()
app.listen(8000,()=>{
    console.log("開啟成功")
})

2.3.2后臺(tái)處理要發(fā)送的數(shù)據(jù)

在后臺(tái)需要發(fā)送的數(shù)據(jù)有兩種
1.實(shí)時(shí)的年月日,以及當(dāng)前的時(shí)間
2.實(shí)時(shí)的七天天氣信息

2.3.2.1實(shí)時(shí)時(shí)間

通過實(shí)例化Date()函數(shù)就可以實(shí)現(xiàn)。
然后通過對應(yīng)的函數(shù)獲得時(shí)間信息。
然后對數(shù)據(jù)進(jìn)行JSON化,發(fā)送時(shí)處理數(shù)據(jù)格式

在這里我們會(huì)設(shè)置一個(gè)接口,用于前端獲取數(shù)據(jù)。
/timeDate接口

app.get('/timeDate',(req,res)=>{
	//用于處理跨域問題
    res.setHeader('Access-Control-Allow-Origin', '*');
    //響應(yīng)頭
    res.setHeader('Access-Control-Allow-Headers', '*');
   //實(shí)例化內(nèi)置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()
    //將數(shù)據(jù)json化,傳輸數(shù)據(jù)
    const TimeDate={year,mouth,day,hour, min,second}
    //向客戶端發(fā)送數(shù)據(jù)
    res.send(JSON.stringify(TimeDate))
})

2.3.2.2七天天氣信息

這個(gè)七天的信息都是通過網(wǎng)上數(shù)據(jù)得到的。

在官網(wǎng)天氣官網(wǎng)你能獲取每天的實(shí)時(shí)信息。
你也可以通過我創(chuàng)建的數(shù)據(jù)接口獲得數(shù)據(jù)接口
由于考慮到請求的時(shí)間問題,我將數(shù)據(jù)存儲(chǔ)在data.json中
用于來提高數(shù)據(jù)請求與發(fā)送的時(shí)間。

實(shí)現(xiàn)的就是通過fs模塊讀取數(shù)據(jù),然后來得到數(shù)據(jù),
創(chuàng)建接口,向前端發(fā)送數(shù)據(jù)

然后就是后臺(tái)代碼:

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', '*');
        //響應(yīng)頭
        res.setHeader('Access-Control-Allow-Headers', '*');
        res.send(result)
    })
})

2.4前端處理獲取的數(shù)據(jù)

2.4.1時(shí)間數(shù)據(jù)

我們要做的就是獲得到時(shí)間數(shù)據(jù)。
將其展示到對應(yīng)的位置。
1.時(shí)鐘表 2.時(shí)間顯示

先得到對應(yīng)的DOM結(jié)構(gòu),然后設(shè)置js與css樣式

處理流程就是:
綁定點(diǎn)擊事件==》通過ajax獲取接口數(shù)據(jù)==》得到對應(yīng)的DOM接口 =+=》插入數(shù)據(jù),設(shè)置css樣式

/*渲染時(shí)鐘*/
//獲得時(shí),分,秒的DOM結(jié)構(gòu)
const hours=document.querySelector(".hour")
const mins=document.querySelector('.min')
const seconds=document.querySelector('.seconds')
//獲得六個(gè)空地方的DOM結(jié)構(gòu)
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')
//綁定點(diǎn)擊事件
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) {
                //對請求的數(shù)據(jù)結(jié)構(gòu)化
                let result =JSON.parse(xhr.response);
                //得到時(shí)
                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)`
                
                //將數(shù)據(jù)插入指定的位置
                 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部分。
需要的數(shù)據(jù)就是。
1.七天的時(shí)間,以及他們對應(yīng)的最高,最低溫度
2.七天的溫度,以及對應(yīng)的溫馨提示信息。
時(shí)間的高低我用柱狀圖表示。
溫度及提示用餅圖表示

設(shè)置echarts圖表時(shí),最重要的時(shí)data數(shù)據(jù),其他的輔助信息可根據(jù)管網(wǎng)提示來設(shè)置

2.4.2.1時(shí)間數(shù)據(jù)處理

獲得接口數(shù)據(jù),得到對應(yīng)的值

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)
 //由于得到的數(shù)據(jù)是數(shù)組,
 //而option的data數(shù)據(jù)的格式是json格式。
 //所以需要將數(shù)據(jù)加工
 const maxMINArr=data.map((item)=>{
       return {product:item.date,最低溫度:item.tem1,最高溫度:item.tem2}
  })
}
//echarts中的option的屬性設(shè)置
 dataset: {
       dimensions: ['product', '最高溫度', '最低溫度'],
        source:maxMINArr
     },

2.4.2.2溫度及提示

需要注意的是由于得到的數(shù)據(jù)是
數(shù)組,而echarts的option設(shè)置的數(shù)據(jù)
需要的是json類的形式,所以
需要對數(shù)據(jù)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的屬性設(shè)置
tooltip:{
       show:true,
       //提示信息json化數(shù)據(jù)
      formatter: function(arg){
	 return arg.data.name+' : '+arg.data.value+'c'+' :  '+arg.data.level+' :  '+arg.data.tips.desc
      }
 },
series: [
   {
      name: 'Access From',
      type: 'pie',
      radius: '50%',
      data:dataArr,
       emphasis: {
       itemStyle: {
              shadowBlur: 10,
             shadowOffsetX: 0,
              shadowColor: 'rgba(0, 0, 0, 0.5)'
            }
        }
 }
 ]
 }

2.5效果展示

時(shí)間服務(wù)器

3.總結(jié)

1.了解node的fs模塊怎么讀取數(shù)據(jù)
2.了解express怎么搭建服務(wù)器,設(shè)置數(shù)據(jù)接口
3.學(xué)會(huì)echarts的設(shè)置與使用
4.了解怎么改變?nèi)诸伾?br />5.了解ajax怎么處理后臺(tái)數(shù)據(jù)

到此這篇關(guān)于node+js搭建時(shí)間服務(wù)器的文章就介紹到這了,更多相關(guān)node時(shí)間服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • node.js cookie-parser 中間件介紹

    node.js cookie-parser 中間件介紹

    這篇文章主要介紹node.js cookie-parser 中間件,講解的比較詳細(xì),需要的朋友可以參考下。
    2016-06-06
  • node.js用fs.rename強(qiáng)制重命名或移動(dòng)文件夾的方法

    node.js用fs.rename強(qiáng)制重命名或移動(dòng)文件夾的方法

    本篇文章主要介紹了node.js用fs.rename強(qiáng)制重命名或移動(dòng)文件夾的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • node.js中的fs.appendFileSync方法使用說明

    node.js中的fs.appendFileSync方法使用說明

    這篇文章主要介紹了node.js中的fs.appendFileSync方法使用說明,本文介紹了fs.appendFileSync方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 使用Express處理請求和托管靜態(tài)資源方式

    使用Express處理請求和托管靜態(tài)資源方式

    這篇文章主要介紹了使用Express處理請求和托管靜態(tài)資源方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • npm?install?-g?@vue/cli常見問題解決匯總

    npm?install?-g?@vue/cli常見問題解決匯總

    這篇文章主要給大家介紹了關(guān)于npm?install?-g?@vue/cli常見問題解決的相關(guān)資料,文中通過實(shí)例代碼將解決的方式介紹的非常詳細(xì),對遇到這個(gè)問題的朋友具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-08-08
  • Node.js實(shí)現(xiàn)簡單聊天服務(wù)器

    Node.js實(shí)現(xiàn)簡單聊天服務(wù)器

    Node.js 是一個(gè)基于Chrome JavaScript運(yùn)行時(shí)建立的一個(gè)平臺(tái), 用來方便地搭建快速的,易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用,今天我們來探討下,如何使用node.js實(shí)現(xiàn)簡單的聊天服務(wù)器
    2014-06-06
  • 淺談node如何優(yōu)雅地獲取mac系統(tǒng)版本

    淺談node如何優(yōu)雅地獲取mac系統(tǒng)版本

    這篇文章主要和大家聊聊node如何優(yōu)雅地獲取mac系統(tǒng)版本,文中有詳細(xì)的代碼示例和流程步驟,對我們學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-06-06
  • 推薦 21 款優(yōu)秀的高性能 Node.js 開發(fā)框架

    推薦 21 款優(yōu)秀的高性能 Node.js 開發(fā)框架

    Node.js是JavaScript中最為流行的框架之一,易于創(chuàng)建可擴(kuò)展的Web應(yīng)用。Node.js包含不同類型框架,包括MVC, full-stack,REST API以及Generators。借助這些框架使Node.js更加易于使用,它還支持眾多特性功能,只需幾個(gè)步驟就可快速搭建強(qiáng)大的Web應(yīng)用。本文為大家推薦21款
    2014-08-08
  • 詳談nodejs異步編程

    詳談nodejs異步編程

    本文詳細(xì)介紹了node.js異步編程的分類以及異步編程存在的問題,非常的詳盡,非常細(xì)致,這里推薦給小伙伴。
    2014-12-12
  • nodejs分頁類代碼分享

    nodejs分頁類代碼分享

    最近在寫nodejs項(xiàng)目,沒有發(fā)現(xiàn)合適或者特別好用的分頁插件,今天晚上自己寫了一個(gè),分享給大家,也希望大家能夠拍磚!
    2014-06-06

最新評論