“实时数据大屏2k、4k、8k”这样做【高级前端必备技能之一】

🔥废话不多先上效果图

在这里插入图片描述

🔥划重点

新手程序员需要注意以下几点:

  1. 我们需要进行充分的技术调研,进行技术选型
  2. 产品,UI,再三确认效果图是否确定,避免后续出现返工的情况

不能拿到效果图之后,一股脑就开始排期,进入开发流程,首先和产品以及UI等同事确认好之后,分析是否存在比较难实现的效果,提出来,大家一起想替换方案,避免后期因为某些效果不能实现阻塞整体的开发进度,这也算是一些日常工作中的一些需要注意的地方。

🔥 技术选型

数据统计大屏,目前市面主流的技术 Echarts 和 阿里旗下的 AntV 这两大厂商做的还是很好的,根据效果图中的图表,在对应的官网,文档中浏览,找到一个图表比较全的,文档比较清晰的图表库,按照到文档的流程安装到项目中。

  1. AntV 官网
  2. Echarts官网

🔥图表组件开发

完成技术选型之后,我们就可以进行前端静态页面的开发,按照组件化的开发思维,对页面进行合理的组件划分,提高代码复用性的同时也便于后期维护。
我们选择 Echarts 图表库,可以结合自身需求进行选择
下面是一个毛坯版本的柱状图组件,要实现效果图比较炫酷的效果,我们只需要基于这个毛坯版本,按照官网文档提供的方法,对一些图表的颜色**(线条颜色、文本颜色、图表颜色、lenged颜色)**进行个性化的设置即可满足效果。
在这里插入图片描述

<template><div ref="dom" class="charts chart-bar"></div>
</template><script>
import echarts from "echarts";
import { on, off } from "@/libs/tools";
export default {name: "ChartBar",props: {value: Object,text: String,name: String,conversion: {default: false,},},data() {return {dom: null,};},methods: {resize() {this.dom.resize();},initChart() {this.$nextTick(() => {let option = {title: {text: this.text,left: "left",textStyle: {fontSize: 16,fontStyle: "normal",color: "#333",},},tooltip: {backgroundColor: "rgba(0,0,0,0.8)",padding: [10, 15, 10, 15],trigger: "item",formatter: "{a} <br/>{b} : {c}",},grid: {top: "30px",left: "20px",right: "20px",bottom: "0px",containLabel: true,},xAxis: [{type: "category",data: this.value.xAxis.data,axisTick: {alignWithLabel: true,},axisLabel: {color: "#333",},axisLine: {show: true,lineStyle: {color: "#DDDDDD",width: 1,},},},],yAxis: [{type: "value",axisTick: {show:false,alignWithLabel: false,},splitLine: {show: true,lineStyle: {type: "dashed",},},axisLabel: {color: "#333",},axisLine: {show: true,lineStyle: {color: "#DDDDDD",width: 1,},},},],series: [{name: this.name,type: "bar",barWidth: "24px",itemStyle: {color: "#4586FF",},label: {show: true,position: "top",color: "#333",},data: this.value.series.data,},],};this.dom.setOption(option);// 防止初始化时图表大小错误this.resize();});},},onMo() {this.dom = echarts.init(this.$refs.dom, "tdTheme");on(window, "resize", this.resize);},beforeDestroy() {off(window, "resize", this.resize);},watch: {value: {handler(val, oldVal) {this.initChart();},deep: true,immediate: true,},},
};

🔥组件使用

<chart-bar:showLegend="true"style="width: 900px; height: 700px":value="MapData"text="柱状图"name="星座图"
/>

🔥屏幕适配

F12 之后选择手机Ipad模式,选择 Edit 自定义 屏幕的宽高,可以自定义 比如 4K分辨率8K分辨率,满足业务需求即可。
后续在开发调试,可以选择不同的设备进行适配兼容。个人可以根据自身情况选择布局模式(百分比rempostcss插件等)均可,已实现业务需求为主。
在这里插入图片描述

🔥实时数据获取

目前有三种方案:

  1. 前端定时轮询(不太建议)
  2. SSE后端主动推送(建议)
  3. WebSocket 通信(不建议)

🦟 首先说为什么不建议第三种,有点复杂,不管前端还是后端,有点打炮打蚊子嫌疑,完全没必要
🦟大多数可能都采用第一种方案,毕竟第一种方案完全不需要后端配合,只需要前端定时的去轮询调用查询接口即可,但是要需要注意,轮询也有很多弊端,详情见之前的文章,感兴趣的可以看看
https://blog.csdn.net/weixin_43742274/article/details/139918425?spm=1001.2014.3001.5502
🦟 第二种方案相对第一种和第三种我个人觉得是最好的,但是要需要后端同学配合
大家可以根据自己公司的调性进行选型,因为我们公司比较注重性能、信息安全这类的采用的第二种

🔥 结语

本文主要介绍,从0到1 实现一个实时数据大屏的基本过程,这个大体的技术框架基本可以覆盖市面上80%的公司业务需求,除非有些特殊的大屏需要做特殊处理,希望这篇文章能够给你带来一些技术上的提升。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【分布式计算框架 MapReduce】MapReduce 初级编程

目录 一、MapReduce 示例程序的导入并运行测试 二、准备 4 个小文件&#xff08;文件大小分别为 1.7M&#xff0c;5.1M&#xff0c;3.4M&#xff0c;6.8M&#xff09; 1. 第一种情况&#xff0c;默认分片&#xff1a;不修改程序代码&#xff0c;直接使用 WordCount 源程序 2…

电脑提示vcomp140.dll丢失的几种有效的解决方法,轻松搞定dll问题

在电脑使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是找不到vcomp140.dll。那么&#xff0c;究竟什么是vcomp140.dll呢&#xff1f;为什么会出现找不到vcomp140.dll的情况呢&#xff1f;本文将从vcomp140.dll的定义、常见原因、对电脑的影响以及解…

如何理解CI/CD的概念及其在Java项目中的应用

CI/CD 是持续集成&#xff08;Continuous Integration&#xff09;和持续交付/部署&#xff08;Continuous Delivery/Deployment&#xff09;的缩写。它是一种现代软件开发实践&#xff0c;用于提高代码发布的频率和质量&#xff0c;确保软件系统的稳定性和一致性。通过自动化构…

19.《C语言》——【如何理解static和extern?】

&#x1f387;开场语 亲爱的读者&#xff0c;大家好&#xff01;我是一名正在学习编程的高校生。在这个博客里&#xff0c;我将和大家一起探讨编程技巧、分享实用工具&#xff0c;并交流学习心得。希望通过我的博客&#xff0c;你能学到有用的知识&#xff0c;提高自己的技能&a…

解锁iCloud的全能潜力:从新手到专家的终极指南!

在今天这个数字化日益发达的时代&#xff0c;云服务已经成为我们生活中不可或缺的一部分。苹果公司的iCloud服务&#xff0c;作为一个集成的云服务平台&#xff0c;为用户提供了数据存储、备份、同步等多样化的功能。通过本文&#xff0c;我们将深入探讨如何高效利用iCloud&…

[单机版架设]新天堂2-死亡骑士338|带AI机器人

前言 今天给大家带来一款单机游戏的架设&#xff1a;新天堂2-死亡骑士338单机服务端—带AI机器人 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; 新天堂2 搭建教程 此游戏架设不需要虚拟机&#xf…

识图生成代码:通义千问vsGPt4o,有点小崩

今日对比一下通义千问和GPt4o&#xff0c;在通过识别图片然后去生成前端代码 在当今ai的时代&#xff0c;通过ai去生成页面的代码可以很大的提高我们的开发效率下面是我们要求的生成的图片截图&#xff0c;这是掘金的榜单 效果对比 首先我们使用通义千问&#xff0c;让他去帮我…

C++11中引入的auto关键字和范围for循环(range-based for loop)。

C11中引入的auto关键字和范围for循环&#xff08;range-based for loop&#xff09;是两项重要的新特性&#xff0c;它们旨在提高代码的可读性和简洁性&#xff0c;同时减少编写错误。 auto关键字 auto关键字在C11中被赋予了新的含义&#xff0c;用于自动类型推断。在C11之前…

Django 自定义过滤器

1&#xff0c;编写自定义过滤器并注册 创建目录 Test/app5/templatetags 分别创建文件 Test/app5/templatetags/__init__.py Test/app5/templatetags/myfilter.py 添加过滤器脚本 Test/app5/templatetags/myfilter.py from django import template register template.…

Python功能制作之使用streamlit做一个简单的WebUI

使用Streamlit创建WebUI 1. 什么是Streamlit Streamlit 是一个开源的Python库&#xff0c;用于快速创建美观的Web应用。 它适合数据科学家和机器学习工程师&#xff0c;因为它能够以最小的代码量将数据应用程序带到浏览器中。通过简单的Python脚本&#xff0c;可以创建交互式…

c++类和对象(三)日期类

类和对象 一.拷贝构造函数定义二.拷贝构造函数特征三.const成员函数权限权限的缩小权限的缩放大 四.隐式类型转换 一.拷贝构造函数定义 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c;在用已存 在的类类型对象…

kettle创建资源库无法登录问题

问题&#xff1a;You dont seem to be getting a connection to the server. Please check the path youre using and make sure the server is up and running. 1. 删除资源库 2.删除数据库中R_开头的表 3.重新创建资源库连接&#xff0c;查看是否成功产生表 4.创建成功&…

如何在离线环境下安装Docker社区版

目录 1. 引言 2. 准备工作 3. 下载Docker安装包 4. 下载Docker的依赖包 5. 将安装包传输到目标系统 6. 安装Docker社区版 7. 配置Docker 8. 解决常见问题 9. 维护和更新Docker 10. 创建离线安装脚本 11. 使用离线镜像 12. 高级配置与优化 13. 安全性考虑 14. 总结…

005-GeoGebra基础篇-GeoGebra的矩形

上一篇关于点的介绍已经触及到了诸多GeoGebra的基础操作&#xff0c;这一篇我们根据画矩形&#xff0c;继续探索GeoGebra。 目录 一、最粗暴的方式绘制矩形1. 使用“Polygon”工具直接绘制2. 注意看代数列表3. 关于矩形和线段 二、用点和线段绘制矩形&#xff08;1&#xff09;…

52、基于K 均值聚类实现基于颜色的分割(matlab)

1、K 均值聚类实现基于颜色的分割原理及流程 K 均值聚类是一种常用的聚类算法&#xff0c;通过将数据点分配到 K 个簇中&#xff0c;每个簇的中心代表簇的平均值来实现聚类的目的。 基于颜色的分割的原理是利用像素的颜色信息来对图像进行分割。首先需要将图像的每个像素点表…

计算机网络微课堂(湖科大教书匠)TCP部分

计算机网络微课堂&#xff08;湖科大教书匠&#xff09;TCP部分 【计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09;】 TCP的流量控制 一般来说&#xff0c;我们希望数据传输得更快一些。但如果发送方把数据发送得过快&#xff0c;接收方就可能来不及接收&#…

FFmpeg 剪切(Seeking)视频后音画不同步问题分析

问题 需求:最近,需要剪切一段mp4格式的视频,要求从第30s位置开始剪切,持续30s的视频段。于是乎,拿出音视频领域最强工具之一,FFmpeg神器,输入命令行:ffmpeg -i input.mp4 -ss 00:00:30.0 -codec copy -t 30 output.mp4播放这段视频output.mp4,问题出现了:前几秒没有画…

Django 表单使用示例:数据格式校验

在本文中,我们将使用 Django 的表单(Forms)功能来创建一个添加角色的页面,并对用户提交的数据进行格式校验。 创建 Django 项目和应用 首先,我们创建一个名为 ​​form_demo​​​ 的 Django 项目和一个名为 ​​app01​​ 的应用: django-admin startproject form_de…

FAST SPLIT PARTITION 快速分割分区

How to Perform a FAST SPLIT PARTITION Using ALTER TABLE? (Doc ID 1268714.1) 快速分割分区&#xff0c;就是如果最大的分区全部满足新split分区的条件&#xff0c;直接把最大的这个改名&#xff0c;再新加一个max分区出来。这样可以避免partition分区index的unsable&…

Nginx配置referer报错大坑:unknown directive “valid_referers“

错误&#xff1a; nginx: [emerg] unknown directive "if($invalid_referer)" in /usr/local/nginx/conf/nginx.conf:27 代码&#xff1a; 设置有效的refer值 none&#xff1a;检测地址没有refer&#xff0c;则有效server_name&#xff1a;检测主机地址&#xf…