Skip to content

大屏适配与 ECharts 封装亮点

一、项目背景

在前端大屏可视化项目中,常见诉求包括:

  • 实现一套代码同时兼容 PC 端和大屏场景
  • 支持 2K、4K、8K 等多分辨率适配
  • 基于 ECharts 快速搭建多种业务图表
  • 解决图表复用、窗口缩放、体积优化等工程问题

常见技术栈示例:

  • Vue / React
  • ECharts
  • DataV
  • Zustand
  • Vite

二、大屏项目常见难点

1. 图表配置重复,开发成本高

在 Vue 或 React 项目中直接使用 ECharts 时,常见问题是:

  • 每个图表都要从头编写完整的 option
  • 同类图表样式高度相似,重复劳动较多
  • 业务数据和图表样式强耦合,不利于维护

2. 窗口缩放后的适配问题

大屏项目通常会遇到:

  • 分辨率变化后布局错位
  • 图表变形
  • 字体、间距、边距在不同屏幕下显示不一致

3. ECharts 打包体积偏大

如果直接全量引入 ECharts,会带来:

  • 首屏加载压力变大
  • 打包体积偏大
  • 不利于大屏项目的整体性能优化

三、适合写进简历的亮点

可以这样总结为项目难点和亮点:

  • 统一封装图表组件,沉淀公共图表能力,实现业务数据与 ECharts option 配置分离
  • 统一处理窗口缩放和图表自适应问题,解决大屏缩放导致的图形变形
  • 通过 ECharts 按需引入减少打包体积,优化项目加载性能
  • 封装通用大屏适配组件,支持 2K、4K、8K 等多种分辨率,并在团队多个项目中复用

简历表达示例:

统一封装 ECharts 图表组件,实现业务数据与样式配置分离;沉淀大屏适配方案并封装为通用组件,支持 2K/4K/8K 多分辨率场景复用,显著提升研发效率。


四、大屏适配方案

大屏适配常见有两种方案:

  • scale 等比缩放方案
  • vw/vh 百分比方案

1. scale 等比缩放方案

实现思路

通过 CSS transform: scale(),基于设计稿尺寸对整个大屏容器进行等比缩放。

优点

  • 实现简单
  • 对现有页面结构侵入小
  • 一套逻辑可快速落地

缺点

当实际屏幕比例与设计稿比例不一致时,容易出现留白

  • 缩放比例过大时,字体可能轻微发虚
  • 缩放比例过大时,事件热区可能发生偏移

示例代码

html
<div className="screen-wrapper">
  <div className="screen" id="screen"></div>
</div>
js
export default {
  mounted() {
    // 初始化时先执行一次适配
    this.handleScreenAuto();
    // 窗口变化后重新适配
    window.onresize = () => this.handleScreenAuto();
  },
  deleted() {
    window.onresize = null;
  },
  methods: {
    // 根据设计稿尺寸计算缩放比例
    handleScreenAuto() {
      const designDraftWidth = 1920;
      const designDraftHeight = 1080;

      const scale =
        document.documentElement.clientWidth /
          document.documentElement.clientHeight <
        designDraftWidth / designDraftHeight
          ? document.documentElement.clientWidth / designDraftWidth
          : document.documentElement.clientHeight / designDraftHeight;

      document.querySelector("#screen").style.transform =
        `scale(${scale}) translate(-50%, -50%)`;
    },
  },
};
scss
.screen-root {
  width: 100%;
  height: 100%;

  .screen {
    position: absolute;
    top: 50%;
    left: 50%;
    display: inline-block;
    width: 1920px;
    height: 1080px;
    transform-origin: 0 0;
  }
}

2. vw/vh 方案

实现思路

按照设计稿尺寸,将页面中的 px 按比例换算为 vwvh

优点

  • 宽高、字体、间距都可以动态计算
  • 当屏幕比例与设计稿不一致时,不容易出现两侧留白

缺点

  • 每个图表、字号、间距都需要单独适配
  • 落地成本更高,维护更细碎

五、ECharts 渲染模式补充

1. Canvas 渲染

优点

  • 性能较强,适合大数据量场景
  • 动画更流畅
  • 更适合实时更新和复杂图形绘制

缺点

  • 图形绘制完成后不方便像 DOM 一样直接编辑
  • SEO 和无障碍支持较弱

适用场景

  • 散点图、热力图、实时数据流图
  • 高性能渲染场景
  • 数据量较大的可视化项目

2. SVG 渲染

优点

  • 矢量图形,缩放后不失真
  • 易于交互和元素级修改
  • 可访问性和 SEO 支持更好

缺点

  • 图形复杂或数据量大时,性能不如 Canvas
  • DOM 节点多时,内存占用较高

适用场景

  • 饼图、柱状图等中小数据量图表
  • 强交互或高精度展示场景

六、总结

在大屏项目中,这一块内容可以归纳为三个关键词:

  • 组件封装
  • 大屏适配
  • 图表性能优化

如果在面试中展开,可以重点聊:

  • 为什么要做图表组件封装
  • scalevw/vh 两种适配方案的 trade-off
  • 如何通过按需引入优化 ECharts 打包体积