“实时数据大屏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%的公司业务需求,除非有些特殊的大屏需要做特殊处理,希望这篇文章能够给你带来一些技术上的提升。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

『SD』AI绘画,不会写提示词怎么办?

提示词 有没有想过&#xff0c;为什么你用 SD 生成的猫是长这样的。 而其他人可以生成这样的猫。 虽然生成的都是猫&#xff0c;但猫与猫之间还是有差距的。 如果你的提示词只是“cat”&#xff0c;那大概率就会出现本文第一张图的那个效果。而如果你加上一些形容词&#xff…

【涵子来信】——社交宝典:克服你心中的内向,世界总有缺陷

内向&#xff0c;你是内向的吗&#xff1f;想必每个人不同&#xff0c;面对的情形也是不同的。 暑假是一个很好的机会&#xff0c;我是可以去多社交社交。但是&#xff0c;面对着CSDN上这么多技术人er&#xff0c;那么&#xff0c;我的宝典&#xff0c;对于大家&#xff0c;有…

【刷题】初步认识深搜(DFS)

送给大家一句话&#xff1a; 拥有希望的人&#xff0c;和漫天的星星一样&#xff0c;是永远不会孤独的。 -- 《星游记》 初步认识深搜&#xff08;DFS&#xff09; dfs算法二叉树中的深搜Leetcode 129. 求根节点到叶节点数字之和题目描述算法思路 Leetcode 814. 二叉树剪枝题…

poi-tl 生成 word 文件(插入文字、图片、表格、图表)

文章说明 本篇文章主要通过代码案例的方式&#xff0c;展示 poi-tl 生成 docx 文件的一些常用操作&#xff0c;主要涵盖以下内容 &#xff1a; 插入文本字符&#xff08;含样式、超链接&#xff09;插入图片插入表格引入标签&#xff08;通过可选文字的方式&#xff0c;这种方…

英国牛津大学博士后职位—统计学

牛津大学&#xff08;University of Oxford&#xff09;&#xff0c;简称“牛津”&#xff08;Oxford&#xff09;&#xff0c;位于英国牛津&#xff0c;是一所公立研究型大学&#xff0c;采用传统学院制。是罗素大学集团成员&#xff0c;被誉为“金三角名校”、“G5超级精英大…

python 第6册 辅助excel 002 批量创建非空白的 Excel 文件

---用教授的方式学习 此案例主要通过使用 while 循环以及 openpyxl. load_workbook()方法和 Workbook 的 save()方法&#xff0c;从而实现在当前目录中根据已经存在的Excel 文件批量创建多个非空白的Excel 文件。当运行此案例的Python 代码&#xff08;A002.py 文件&#xff0…

论文阅读_优化RAG系统的检索

英文名称: The Power of Noise: Redefining Retrieval for RAG Systems 中文名称: 噪声的力量&#xff1a;重新定义RAG系统的检索 链接: https://arxiv.org/pdf/2401.14887.pdf 作者: Florin Cuconasu, Giovanni Trappolini, Federico Siciliano, Simone Filice, Cesare Campag…

MyBatis Plus条件构造器使用

1Wrapper&#xff1a; 条件构造抽象类&#xff0c;最顶端父类 1.1 AbstractWrapper&#xff1a; 用于查询条件封装&#xff0c;生成 sql 的 where 条件 1.2 QueryWrapper&#xff1a; Entity 对象封装操作类&#xff0c;不是用lambda语法 1.3 UpdateWrapper&#xff1a; Update…

[Go 微服务] go-micro + consul 的使用

文章目录 1.go-micro 介绍2.go-micro 的主要功能3.go-micro 安装4.go-micro 的使用4.1 创建服务端4.2 配置服务端 consul4.3 生成客户端 5.goodsinfo 服务5.1 服务端开发5.2 客户端开发 1.go-micro 介绍 Go Micro是一个简化分布式开发 的微服务生态系统&#xff0c;该系统为开…

java热部署idea插件「jrebel安装教程」

告别漫长的项目重启等待&#xff0c;让开发像写诗一样流畅~ jrebel安装包下载 jrebel版本需要下比较老的版本&#xff0c;我用的是22.4.1的版本&#xff08;如果不差钱&#xff0c;可以支持一下正版&#xff0c;直接选择最新的版本即可&#xff09; 下载地址&#xff1a;传送门…

Python逻辑控制语句 之 判断语句--if else结构

1.if else 的介绍 if else &#xff1a;如果 ... 否则 .... 2.if else 的语法 if 判断条件: 判断条件成立&#xff0c;执行的代码 else: 判断条件不成立&#xff0c;执行的代码 &#xff08;1&#xff09;else 是关键字, 后⾯需要 冒号 &#xff08;2&#xff09;存在冒号…

链表-求链表中环的入口结点(easy)

目录 一、问题描述 二、解题思路 三、代码实现 四、刷题链接 一、问题描述 二、解题思路 本题基本思路&#xff1a; 1.设置一个hashSet来存储已经访问过的链表结点地址&#xff0c;注意不要直接存储链表内元素&#xff0c;因为链表内元素可能存在重复的&#xff0c;地址是不…

uniapp uniCloud云开发

uniCloud概述 uniCloud 是 DCloud 联合阿里云、腾讯云、支付宝云&#xff0c;为开发者提供的基于 serverless 模式和 js 编程的云开发平台。 uniCloud 的 web控制台地址&#xff1a;https://unicloud.dcloud.net.cn 文档&#xff1a;https://doc.dcloud.net.cn/uniCloud/ un…

【高考志愿】集成电路科学与工程

目录 一、专业概述 二、课程设置 三、就业前景 四、适合人群 五、院校推荐 六、集成电路科学与工程专业排名 一、专业概述 集成电路科学与工程&#xff0c;这一新兴且引人注目的交叉学科&#xff0c;正在逐渐崭露头角。它集合了电子工程、计算机科学、材料科学等多个领域的…

Kotlin中对空的很多处理

代码图片直观效果 逐行解释Kotlin中对空的各种情况的使用 private fun testNull() {val flag 1var name: String? nullvar user: User? // 有警告, 因为下面的赋值可以和这一行定义合并var zhangUser: User? User()var wangUser: User User() // 提示Explicitly given t…

Unity 字体创建时候容易导致字体文件不正确的一种情况

上面得到了两种字体格式&#xff0c;一种是TextMeshPro的&#xff0c;另一种是Unity UI系统中默认使用的字体资源。其原因是创建的位置不同导致的。 1.下面是TextMeshPro字体创建的位置 2&#xff1a;下面是Unity UI系统中默认使用的字体资源

Java学习【IO流:深入理解与应用(上)】

Java学习【IO流&#xff1a;深入理解与应用&#xff08;上&#xff09;】 &#x1f343;1.IO流体系结构&#x1f343;2.FileOutputStream&#x1f341;2.1FileOutputStream写数据的三种方式&#x1f341;2.2换行和续写 &#x1f343;3.FileInputStream&#x1f341;3.1每次读取…

pbootcms后台获取前端表单留言页面url

pbootcms在线留言表单&#xff0c;用户在网页前端提交表单成功后&#xff0c;在网站后台如何获取表单留言页面的url这个参数呢&#xff1f;下面举例说明&#xff1a;首先&#xff0c;我们在PBootcms后台对应的表单&#xff0c;添加需要记录的表单字段&#xff0c;例如 添加liuy…

微服务-网关Gateway

个人对于网关路由的理解&#xff1a; 网关就相当于是一个项目里面的保安&#xff0c;主要作用就是做一个限制项。&#xff08;zuul和gateway两个不同的网关&#xff09; 在路由中进行配置过滤器 过滤器工厂&#xff1a;对请求或响应进行加工 其中filters&#xff1a;过滤器配置…

停车场智能化管理:车位引导系统实现车位资源优化与数据分析

随着城市汽车保有量的不断增长&#xff0c;停车难问题日益凸显。尤其是在高峰时段&#xff0c;寻找停车位和取车成为了许多车主的头疼问题。为了解决这一难题&#xff0c;维小帮智能车位引导系统应运而生&#xff0c;它利用先进的技术手段&#xff0c;帮助车主快速找到停车位&a…