Nuxt ECharts: 在 Nuxt 项目中轻松集成 ECharts

14 天前
 kingyue

在 Nuxt/Vue 中使用 ECharts 需要许多额外的配置,还要注意在开启 Nuxt SSR 时不引入在服务端无法运行的代码。nuxt-echarts正是为了解决这些痛点而生。只需要一行命令就能完成安装,还提供了同时配置按需引入和 TypeScript 类型的统一设置。

Github →

文档 →

功能

安装

npx nuxi module add echarts

快速上手

nuxt.config.ts中配置需要用到的功能(缩小打包体积,避免引入整个 ECharts ):

export default defineNuxtConfig({
  modules: ['nuxt-echarts'],
  echarts: {
    charts: ['BarChart'],
    components: ['DatasetComponent', 'GridComponent', 'TooltipComponent'],
  },
})

然后就可以在你的项目中使用<VChart>组件了,如果是 TypeScript 项目,你还可以直接使用按照上面的配置自动生成的ECOption类型,为 ECharts 配置提供类型提示:

<script setup lang="ts">
const option = ref<ECOption>({
  dataset: {
    dimensions: ['Product', '2015', '2016', '2017'],
    source: [
      {
        Product: 'Matcha Latte',
        2015: 54,
        2016: 42,
        2017: 23,
      },
    ],
  },
  xAxis: { type: 'category' },
  yAxis: {},
  series: [{ type: 'bar' }],
})
</script>

<template>
  <VChart :option="option" />
</template>

<VChart> 其实就是 @Justineo 大佬的Vue-ECharts,用法完全一样。本项目为 Vue-ECharts 提供了 Nuxt 项目的一键集成,同时还增加了 ECharts 服务端渲染功能。

进阶功能:ECharts SSR

通常即使是开启了 Nuxt 的 SSR ,我们在使用 ECharts 时也仅是在客户端组件挂载后才渲染图表,从服务端发送过来的 HTML 是不含图表的。

ECharts 在 v5.3 和 v5.5 中分别引入了服务端 SVG 渲染功能和客户端轻量运行时(请务必先阅读这个官方文档),让我们能够在前端第一时间显示图表,而且可以在一些无需复杂交互的场景下大幅减少包体积,只在客户端加载一个不到 4KB 的轻量运行时。

nuxt-echarts将各种使用场景封装成了组件,除了常用的<VChart>,还有基于服务端组件VChartIsland<VChartServer><VChartLight>,分别对应不同的应用场景:

组件 渲染方案 加载量 功能和交互丧失 推荐场景
VChart 同时设置 ssr:true 服务器端 SVG 渲染加客户端 ECharts 延迟加载 延迟加载完成前无法交互 首屏加载时间敏感,对完整功能和交互有较高需求,图表加载后最好不立即需要交互
VChartIsland 只在服务器端 SVG 渲染 不支持图例切换系列显示,不支持工具提示等对实时性要求高的交互 首屏加载时间敏感,对完整功能和交互要求较低
VChartServer 只在服务器端 SVG 渲染 与上面相同,但可以 inject 由祖先组件provide的数据 与上面相同
VChartLight 服务器端 SVG 渲染加客户端轻量级运行时 无法实现对实时性要求高的交互 首屏加载时间敏感,对完整功能和交互要求较低,对代码量有严格要求,对交互实时性要求不严格

Examples →

Nuxt ECharts 文档中探索更多细节吧,欢迎在IssuesDiscussions中提出任何问题与建议!

888 次点击
所在节点    分享创造
1 条回复
dragonszy
7 天前
战略马克,感觉很需要

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1117555

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX