Nuxt ECharts: 在 Nuxt 项目中轻松集成 ECharts - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
kingyue

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

  •  
  •   kingyue
    kingyue737 2025 年 3 月 11 日 2233 次点击
    这是一个创建于 410 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    Github →

    文档 →

    功能

    • 服务端渲染 (SSR): 使用 Nuxt 服务端组件进行服务端 SVG 渲染

    • 客户端水合 (Hydration): 按需懒加载完整的 ECharts 或轻量化的客户端运行时

    • 可配置: 仅导入必要的 ECharts 功能以缩小打包体积

    • 强类型支持: 根据用户配置自动导入 ECharts 的选项类型

    • Tree-shaking: 只有使用到的组件才会被构建打包

    安装

    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/code> 只在服务器端 SVG 渲染 与上面相同,但可以 inject 由祖先组件provide的数据 与上面相同
    VChartLight 服务器端 SVG 渲染加客户端轻量级运行时 无法实现对实时性要求高的交互 首屏加载时间敏感,对完整功能和交互要求较低,对代码量有严格要求,对交互实时性要求不严格

    Examples →

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

    1 条回复    2025-03-18 13:30:08 +08:00
    dragonszy
        1
    dragonszy  
       2025 年 3 月 18 日   1
    战略马克,感觉很需要
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1660 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 16:25 PVG 00:25 LAX 09:25 JFK 12:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86