图表组件
echarts 服务端渲染 文档:https://echarts.apache.org/handbook/zh/how-to/cross-platform/server/
- ECharts 提供了两种服务器渲染, SVG 渲染或 Canvas 渲染
- SVG 做服务端渲染,再用 Canvas 做客户端渲染的效果
- 因为canvas渲染涉及到dom操作相关,可能会导致在首屏无法渲染出图表
- 官网文档推荐:服务端优先考虑 SVG 渲染方案
- 可以考虑先使用服务端渲染快速输出首屏图表,然后等待
echarts.js加载完后,重新在客户端渲染同样的图表(称为 Hydration),这样就可以实现正常的交互效果和动态改变数据了
服务端渲染无法支持的功能包括:
- 动态改变数据
- 高亮鼠标所在的数据项
- 点击图例切换系列是否显示
- 移动鼠标显示提示框
- 其他交互相关的功能
nuxt-echarts
-
nuxt-echarts的ssr支持:https://echarts.nuxt.dev/guides/ssr
-
支持在服务端中渲染svg图表
- 注意需要指定initOptions,初始用固定宽高度,而且是数字类型,等到客户端渲染的时候,在替换动态的宽高度
- 如果ssr首屏渲染svg时候,不指定宽高度,会导致无法渲染出图表,报错
<svg> attribute width: Unexpected end of attribute. Expected length, "".Error: <text> attribute transform: Expected ')', "translate(35.16 NaN)".- 表示生成的 SVG 元素缺少有效的 width 、height属性
const initOptions = computed(() => {
if (process.server) {
return { width: 600, height: 400 } // SSR 固定
}
return { width: '100%', height: 400 }
})