(五)Web_Server+网页可视化展示

这篇具有很好参考价值的文章主要介绍了(五)Web_Server+网页可视化展示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一步:先使用nodeJS获取mqtt转发的数据:添加链接描述

第二步:使用fs库,将数据存入txt文件(接上一步,这里没处理数据格式,只是测试)


var fs=require("fs");

const mqtt = require('mqtt')
//存储订阅的消息
var message={}

const host = '47.113.146.63'
const port = '1883'
const clientId = `mqtt_${Math.random().toString(16).slice(3)}`
const connectUrl = `mqtt://${host}:${port}`
const client = mqtt.connect(connectUrl, {
  clientId,
  clean: true,
  connectTimeout: 4000,
  username: 'emqx',
  password: 'public',
  reconnectPeriod: 1000,
})


//订阅主题
const subtopic = 'inTopic'
//发布主题
const pubtopic = 'outTopic'
client.on('connect', () => {
  console.log('Connected')
  client.subscribe([subtopic], () => {
    console.log(`Subscribe to topic '${subtopic}'`)
  })
  client.publish(pubtopic, 'nodejs mqtt test', { qos: 0, retain: false }, (error) => {
    if (error) {
      console.error(error)
    }
  })
})



client.on('message', (topic, payload) => {
  console.log('Received Message:', subtopic, payload.toString())
 //将数据存储到fs文件系统中(改成往数据库中写入数据替换这部分)
  fs.appendFile('test1.txt', payload.toString(), (err) => {
    if (err) {
      console.log('数据追加失败');
    } else {
      console.log('数据追加成功');
    }
    
});

})



(五)Web_Server+网页可视化展示
第三步:(升级)将数据存入mysql数据库
安装和Nodejs连接mysql参考:参考文章
创建一个senior_mysql.js文件

//这里用于连接数据库和往数据库插入数据,并且暴露方法
// 第一步:引入mysql模块
let mysql = require("mysql");

// 连接参数
const db_config={
    host     : 'localhost', // 主机地址
    user     : 'root',      // 用户名
    password : '123456',    // 用户密码
    database : 'nodejs',    // 数据库名
    port     : 3306,         // 端口号,默认3306 
    timezone : 'utc' // 解决时区时间统一的问题
}

// 第二步:创建数据库连接池,这里参数会很多
let pool=mysql.createPool(db_config)

// 第三步:正式发起数据库连接
pool.getConnection(function(err,connect){//通过getConnection()方法进行数据库连接
    if(err){
        console.log(`mysql链接失败${err}`);
    }else{
    }
})

// 插入打卡记录
//存储采集的温度和时间,id自增
function insertRecord(temp,time) {
  // 第三步:正式发起数据库连接
  pool.getConnection(function(err,connect){//通过getConnection()方法进行数据库连接
    if(err){
        console.log(`mysql链接失败${err}`);
    }else{
        let insertSql2 = `insert into temp_record(temp,time) values ('${temp}','${time}')`
        console.log(insertSql2)
        connect.query(insertSql2,function(err,result){
            if(err){
                console.log(`SQL error:${err}`)
            }else{
                console.log('插入成功');
                //打印数据库里的数据,测试用
                console.log(result);
                connect.release();//释放连接池中的数据库连接
            }
        });
    }
  })
}

module.exports = {
    insertRecord
}


主文件(只需要将往fs文件系统中写入数据改成往数据库中写入数据即可)

//处理json数据
   var obj=JSON.parse(payload.toString())
   console.log('处理的数据:',obj.msg)
   //时间
   var data=time.getCurrentDateTime();
   console.log('time:',data);

  //将数据存储到数据库中 id自增,temp,时间
    seniormysql.insertRecord(obj.msg,data)

使用mqtt客户端发送数据写入数据库测试成功
(五)Web_Server+网页可视化展示

//服务器中各个文件的功能
使用express开发服务器
第一步:创建app.js 服务器的入口文件
1.创建express对象
2.编写响应函数(中间件)
//可以处理请求或响应体
中间件的特点:对象通过use方法加入一个中间件
一个中间件就是一个函数
中间件的执行顺序符合洋葱模型,内层中间件是否执行,取决于外层中间件是否调用内层中间件
3.监听端口
绑定端口号
启动服务器 node app.js

第二步:
后台项目的实现步骤
1.项目准备
①安装包
②创建文件和目录结构
app.js
data/存放数据
middleware/(response_data.js 处理业务逻辑的中间件响应给前端)(response_duration.js 处理总耗时的中间件)(response_header.js处理响应头的中间件)
utils/ file_utils.js可以帮助我们快速读取某一个目录下的文件
回调调用next()保证下一层中间件能够执行
2.总耗时中间件(第一层)
让内层中间件得到执行通过next(),next()得到的是promise()对象,可以通过await 得到promise中包含的数据- 配合async可以让内层所有中间件得到执行
3.响应头中间件(第二层)
后面在他的基础上增加一些功能
4.业务逻辑中间件
读取文件的内容:获取请求的路径,拼接文件路径(filepath);获取该路径对应的文件内容
设置响应体
5.根据文件的路径读取文件的内容,(这里是file_utils.js 我们存储到数据库)
将数据给传递过去,这里不能用return data,因为返回给文件调用者fs.readfile不是getfileJsonData,通过promise处理异步任务(这里是视频47-14min web拿到服务器数据)

6.允许跨域
1.实际是通过ajax访问服务器
2.同源策略(同协议,同域名,同端口)
直接抄代码

vue的创建(视频49)

正题:
nodejs使用express框架参考:看这个就够了
第一步:创建express对象

//初始化
npm init
//加载express
npm install express --save
// 1. 导入 express
const express = require('express')
//解决跨域问题
const cors = require('cors');
// 2. 创建 web 服务器
const app = express()
app.use(cors())



//监听
app.listen(3002, ()=> {
    console.log('api server running at http://127.0.0.1:3002')
})

(五)Web_Server+网页可视化展示
第二步:Nodejs连接数据库
参考文章:看这篇文章够了
终端连接数据库

npm install mysql --save

连接本地数据库

// 第一步:引入mysql模块
let mysql = require("mysql");

// 连接参数
const db_config={
    host     : 'localhost', // 主机地址
    user     : 'root',      // 用户名
    password : '123456',    // 用户密码
    database : 'nodejs',    // 数据库名
    port     : 3306,         // 端口号,默认3306 
    timezone : 'utc' // 解决时区时间统一的问题
}
var temp = new Array()

// 第二步:创建数据库连接池,这里参数会很多
let pool=mysql.createPool(db_config)


// 第三步:正式发起数据库连接
pool.getConnection(function(err,connect){//通过getConnection()方法进行数据库连接
    if(err){
        console.log(`mysql链接失败${err}`);
    }else{
    }
})


module.exports = pool

Vue项目的准备

(五)Web_Server+网页可视化展示
我主要是使用黑马这个项目的布局(vue的配置跟着49集的视频来):vue项目准备(第49集)

这里和黑马视频里相比,修改了获取后台数据的代码(作参考,并不是最终代码。学习的话参源码学习)
(获取数据库最新10条数据)
(五)Web_Server+网页可视化展示
main.js配置

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import './assets/css/global.less'
import axios from 'axios'
//请求基准路径,后台服务器
axios.defaults.baseURL='http://127.0.0.1:3000/api/user'
// 将axios挂载到vue原型对象上
// 在别的组件中 this.$http就可以通过axios进行ajax请求
// Vue.prototype.$http = axios
//就得这样配置,上面那个不行
Vue.prototype.$axios = axios

//将全局echarts对象挂载到vue的原型对象上
//在别的组件中 this.$echarts就可以使用
Vue.prototype.$echarts=window.echarts
Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

数据可视化

echarts配置如果不能用按照这个来:在vue中使用echarts
绘图参考echarts官网的示例,该该就能用:网页直达
(五)Web_Server+网页可视化展示
改成自己从后台拿到的数据就能用(不清楚的参照源码学习就知道只改了数据部分)
(五)Web_Server+网页可视化展示
设置回调函数,让页面动态刷新,每2s调用一次回调。我这里还没接板子,手动修改数据库数据演示
(五)Web_Server+网页可视化展示
实现功能:(五)Web_Server+网页可视化展示

nodejs获取时间

参考:添加链接描述

补一个用户登录注册系统

参考这个就可以了:登录注册文章来源地址https://www.toymoban.com/news/detail-510918.html

到了这里,关于(五)Web_Server+网页可视化展示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序数据可视化:使用图表和可视化工具展示数据

    在当今信息爆炸的时代,数据无疑是最珍贵的资源之一。然而,海量的数据如果不加以整理和展示,很难从中获取有价值的信息。这时候,数据可视化就发挥了重要作用,它能够通过图表和可视化工具将复杂的数据转化为直观的视觉形式,帮助人们更好地理解和分析数据。本

    2024年02月11日
    浏览(58)
  • 广告数仓:可视化展示

    广告数仓:采集通道创建 广告数仓:数仓搭建 广告数仓:数仓搭建(二) 广告数仓:全流程调度 广告数仓:可视化展示 今天来记录一下广告数仓的最后一部分。可视化展示 FineBI是国内的一款开源的,大数据可视化工具,分为免费版和收费板,实验采用免费版。 因为上次我们

    2024年02月11日
    浏览(32)
  • 数据可视化课程设计——北京新发地官网数据分析与可视化展示【内容在jupyter notebook里面展示】包含数据爬取与可视化分析详解

    目录 一、课题说明 1.1、设计原因: 1.2、设计目标: 1.3、开发环境: 1.4、爬取网站链接 二、准备工作 2.1、数据获取: 2.2、爬取的数据说明: 2.3、爬虫程序设计的思路: 三、详细设计 3.1、导入库的模块: 3.2、对数据先进行读取: 3.2.1、显示前5条记录 3.2.2、查看数据的规模

    2024年02月08日
    浏览(49)
  • 数据可视化UI设计素材资源文件sketch大屏可视化数据展示

    数据是企业的上帝之眼,数据可视化就发挥了很大的作用。很多从事B端产品设计的小伙伴在日常工作中遇到数据可视化的场景比较多,也得益于PSD素材较多,所以用的设计工具大多是Photoshop,但Photoshop用于UI设计太过臃肿,图层太多容易使软件卡崩,占用内存高,新建画板数

    2024年02月11日
    浏览(52)
  • 数字孪生城市3D可视化展示系统多维展示规划成果

    随着科技的不断进步和应用,越来越多的企业开始尝试基于3D可视化技术的智慧化管理,这项技术极大地提升了企业管理效率和优化企业决策,成为了现代企业管理不可或缺的一部分。 在传统的管理模式中,企业管理面临着固有的限制,这些限制包括时空上的限制,即无法实

    2024年02月11日
    浏览(59)
  • 神经网络的可视化:使用3D可视化和交互式界面来展示模型

    作者:禅与计算机程序设计艺术 作为人工智能领域的从业者,我们常常需要与其他技术人员或者领域内的专家进行交流。在这个过程中,一个关键的问题是如何让复杂的神经网络模型变得易于理解和分析。今天,我们将探讨如何使用3D可视化和交互式界面来展示神经网络模型

    2024年02月14日
    浏览(50)
  • 数据可视化——使用echars图表展示

    目录 1、前言 2、解决方案 2.1、echars(前端等组件库) 2.2、PPT等其他软件工具 2.3、使用flourish等在线数据可视化制作平台 2.4、自己用代码实现 有一个小作业,需要自己收集一组数据,然后进行数据可视化,并且对数据进行分析 对此,有多种解决方案,纠结一会后,最终我选

    2024年02月07日
    浏览(59)
  • ChatGPT 实现动态地图可视化展示

    地图可视化分析有许多优点和好处: 1.直观理解: 地图可视化使得复杂的数据更易于理解。通过地图可视化,人们可以直观地看到地理位置、地区之间的关系以及空间分布的模式。 2.提高决策效率: 地图可视化可以帮助决策者快速理解和解释数据,从而提高决策效率。 3.高

    2024年02月10日
    浏览(47)
  • kibana配置 dashbord,做可视化展示

    这里我使用的kibana版本为7.17版本。 语言选择为中文。 需要已经有es,已经有kibana,并且都能正常访问。 kibana的可视化界面,可以配置很多监控统计界面。非常方便,做数据的可视化展示。 这篇文章,做一个最简单的demo入入门 三、操作步骤 通过配置一个通配符,来选择要匹

    2024年03月12日
    浏览(44)
  • 产业园区数字孪生3d可视化全景展示方案

    随着数字经济的发展,数字技术给企业发展带来了机遇的同时,也为企业管理带来挑战。比如园区运维,不仅体量大,复杂的运维管理系统,落地难度也较高。那么如何通过数字化手段重塑园区运营,打通园区各业务数据孤岛,实现多系统业务联动,提升园区管理效率、创新

    2024年02月09日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包