uni-app使用echarts并解决echarts文件过大的问题

背景

这几天写小程序需要用到echarts,又因为我用uni-app开发,因此研究了好久uni-app引用echarts,遇到了也最终解决了好多bug,我感觉大家应该在使用的时候应该都会遇到,因此专门来写一篇博客,希望可以给大家提供一点帮助!!

第一次写,保证超详细!!!

正文

一、uni-app引用echarts

        原生开发和uni-app开发需要引用的echarts不同,我们着重讲uni-app开发,原生的大家另行研究吧。

首先,要去下载插件(用hbuilder编辑器下载特别方便)

echarts-for-wx - DCloud 插件市场

 使用HBuilder导入之后,会生成一个js_sdk目录

其次,只需要将js_sdk下的uni-ec-canvas目录复制到components目录下面就成功引入了

之后,在pages中建立页面并复制如下代码就可以展示图表了

(我这里建立的是test)

<template>
	<view>
		<uni-ec-canvas class="uni-ec-canvas" id="uni-ec-canvas" ref="canvas" canvas-id="uni-ec-canvas" :ec="ec">
		</uni-ec-canvas>
	</view>
</template>
 
<script>
	import uniEcCanvas from '@/components/uni-ec-canvas/uni-ec-canvas.vue'
	import * as echarts from '@/components/uni-ec-canvas/echarts'
	let chart = null
	export default {
		components: {
			uniEcCanvas
		},
		data() {
			return {
				ec: {
					lazyLoad: true
				},
				option: {
					tooltip: {
						trigger: 'axis',
						axisPointer: { // 坐标轴指示器,坐标轴触发有效
							type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
						}
					},
					grid: {
						left: '40',
						right: '40',
						bottom: '3%',
						containLabel: true
					},
					xAxis: {
						type: 'category',
						axisTick: {
							show: false,
						},
						nameTextStyle: {
							color: '#666666'
						},
						axisLabel: {
							show: true,
							textStyle: {
								color: '#666',
								fontSize: '12',
								fontWeight:'bold'
							}
						},
						axisLine: {
							lineStyle: {
								color: '#666',
								width: 1
							}
						},
						data: ["寿险", "重疾", "意外", "医疗", "年金"],
					},
					yAxis: {
						type: 'value',
						axisLine: {
							show: false, //y轴线消失
 
						},
						axisLabel: {
							show: true,
							textStyle: {
								color: '#666',
								fontSize: '11'
							}
						},
 
						axisTick: {
							show: false,
						},
					},
					series: [{
						barWidth: 20,
						type: 'bar',
						data: [20, 50, 40, 10, 20],
						itemStyle: {
							normal: {
								//每根柱子颜色设置
								color: function(params) {
									const colorList = ["#FFC600", "#21A5FF", "#FF6000", "#00D69C",
										"#998BFF"
									];
									return colorList[params.dataIndex];
								}
							}
						},
						label: {
							show: true,
							position: 'top',
							formatter: '{c}万',
							color: '#666666',
							fontStyle: 'PingFang SC',
							fontWeight: 'bold',
							fontSize:'8'
						}
					}]
				},
			}
		},
		methods: {
			initChart(canvas, width, height, canvasDpr) {
				console.log(canvas, width, height, canvasDpr)
				chart = echarts.init(canvas, null, {
					width: width,
					height: height,
					devicePixelRatio: canvasDpr
				})
				canvas.setChart(chart)
				chart.setOption(this.option)
				return chart
			},
		},
		onLoad() {
			setTimeout(() => {
				console.log(this.$refs)
			}, 2000)
			this.$refs.canvas.init(this.initChart)
		},
	}
</script>
 
// 这里一定要注意 设置该组件宽高 以及display:block来确保canvas初始化的时候是有宽高的
<style>
	.uni-ec-canvas {
		width: 100%;
		height: 500rpx;
		display: block;
		margin-top: 30rpx;
	}
</style>

运行到开发者工具就可以看到了(记得在pages.json中设置启动页)

如下是运行页面 

二、解决echarts.js文件过大的问题

        首先,要去echarts官网自定义构建并下载文件ECharts 在线构建 (apache.org)

         

                 下载的是echarts.min.js文件

                其次就是替换文件了

                将项目中的echarts.js替换成echarts.min.js文件

并修改导入的文件

 有两个文件要修改

一是uni-ec-canvas.vue,二是我们建立的test.vue

将echarts.js修改成echarts.min.js

修改完之后大家肯定会发现,为啥报错了!!

别急,下面我们接着来

我们打开echarts.min.js

搜索字符串  t.addEventListener

搜索到之后,在   t.addEventListener后面添加   ?.  

 保存编译之后就好啦!

但是!!!!!!

大伙有时候会出现,即便我们使用了echarts.min.js,编译时压缩js脚本,主包还是太大了!!!

这时候就得发行代码了。。。

 之后选择微信小程序发行就可以了

如果还是不行!!!

那我们就得用最后一招了!!!

分包!!!!

马上到凌晨两点了。。。有空再更吧。。。

可移步查看我在小程序中的应用

记账小程序 微信小程序 源码 uniapp vue3_没糖de药房的博客-CSDN博客

  • 16
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
uni-app使用echarts的详细教程如下: 1. 安装echarts插件 在uni-app项目的根目录下,打开终端,执行以下命令安装echarts插件: ```shell npm install echarts --save ``` 2. 在页面中引入echarts 在需要使用echarts的页面中,引入echarts的js文件。可以在`<script>`标签中使用`import`语句引入echarts: ```javascript import * as echarts from 'echarts' ``` 3. 创建echarts实例 在页面的`<template>`标签中,添加一个容器元素用于显示echarts图表: ```html <view class="chart-container" id="chart"></view> ``` 4. 初始化echarts实例 在页面的`<script>`标签中,使用`uni.createSelectorQuery()`方法获取到容器元素的节点,然后使用`echarts.init()`方法初始化echarts实例: ```javascript onReady() { uni.createSelectorQuery().select('#chart').fields({ node: true, size: true }).exec((res) => { const canvas = res[0].node const ctx = canvas.getContext('2d') const dpr = uni.getSystemInfoSync().pixelRatio canvas.width = res[0].width * dpr canvas.height = res[0].height * dpr const chart = echarts.init(canvas, null, { width: res[0].width, height: res[0].height, devicePixelRatio: dpr }) this.chart = chart }) } ``` 5. 配置echarts图表 在页面的`<script>`标签中,使用`this.chart.setOption()`方法配置echarts图表的选项,例如: ```javascript this.chart.setOption({ title: { text: '柱状图示例' }, xAxis: { data: ['A', 'B', 'C', 'D', 'E'] }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: [5, 20, 36, 10, 10] }] }) ``` 6. 渲染echarts图表 在页面的`<script>`标签中,使用`this.chart.render()`方法将echarts图表渲染到页面上: ```javascript this.chart.render() ``` 以上是uni-app使用echarts的详细教程。你可以根据需要进行配置和定制,实现各种类型的图表展示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没糖de药房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值