首页>>前端>>Vue->vue多个echarts(vue多个组件用同一页面,怎么封装)

vue多个echarts(vue多个组件用同一页面,怎么封装)

时间:2023-12-01 本站 点击:0

关于Vue+ECharts 地图引用空间文件或GIS(.shp)

效果图:

直接步入主题

GIS 能够让你查看这个 .shp 文件的地图内容,但是我感觉用不用都可以,反正我是没用,因为他在合并的时候我不是很理解,毕竟太过跨越了;

关于引用空间文件

1.首先你需要得到一些 .shp 文件,当然是越轻量级越好;

2.你需要将你得到的空间文件在 这个网站进行转化为geoJSON ;

3.你转换的是geoJSON 但是到手的确实JSON文件,这个不用慌,就是这么的无厘头;

4.如果你得到的是一个JSON文件当然最好,如果是多个你就需要合并了,就像我是的安装了很多插件,但是最后都没成,还是自己手动的合成了一下,但好在不是很多,我只有三个,简单地看了一下应该是 (点、线、面)凑成的三个JSON文件;

5.你得到这个JSON文件你成功了三分之二,剩下的就是echarts的操作了,以上的一些步骤卡了我2天时间,毕竟比较菜鸡,叶很水,当然你看见了我这个文章你就乐吧,稳稳地能帮你把这个需求搞定;

以下是ECharts的操作了

1.你需要将你得到的JSON文件放到你的项目文件中以便引入;

这是一个引入外部JSON文件 在ECharts中有过案例;

把这个写上,这个也是官网的案例;

以上就是我的实现经历 如果大家有更方便的办法请联系我或评论哦 (在将几个JSON文件合并时感觉好尴尬)

在Vue中使用echarts

由于在项目中需要对数据进行可视化处理,也就是用图表展示,众所周知echarts是非常强大的插件。一开始想在网上找一个基于vue封装好的(懒省事),eg:vue-echarts ,但是拉取下来发现,跟项目中使用的类型有点偏差,而且他们的数据大多都是定制好的,我很难在此基础上进行更改(惹不起),于是选择了放弃,最终还是选择echarts。以下是我使用的一些心得体会~

我的示例是在vue-cli搭建

首先需要全局引入

在main.js中

在Echarts.vue中

div id="myChart" :style="{width: '300px', height: '300px'}"/div

注意:我们要在mounted生命周期函数中实例化echarts对象。因为我们要确保dom元素已经挂载到页面中

这样一个简单的图表就完成了,是不是觉得很简单?假如在一个大型的项目中,而且数据是非常复杂的?那么该如何操作?

由于全局引入会将所有的echarts图表打包,导致体积过大

在Echarts.vue文件中

使用 require 而不是 import

基于前面的疑问,加上实际运用到项目中遇到的一些问题,我思考使用组件的形式。

从上边可以看出,你每次在使用echarts的时候,都必须要重复的引入,这样很不方便

vue作为一个组件化开发的框架,我们可以使用组件的方式进行集成。每次我们引入组件,进行使用,这样就方便的多。

下面是一个我自己对echarts进行的一个简单的vue组件的集成。

在echarts中

子组件:

props部分是我接收到的参数,父组件获取数据分发,data是父组件分发给echarts的数据源。

父组件:

如果在大型的项目,而且图表又非常的多,那么vuex少不了。如果把数据集中存储到了vuex中,echarts组件再从vuex中获取数据,我们也能随时保存获取的结果,对这些数据可以添加收藏也可以加入缓存中,下次再请求可以先从缓存调用。接下来会继续分享vuex的使用~~~

在vue 中使用百度echarts

前言:在vue2.0中使用 百度echarts 有三种解决方案。

这样每次都要获取图表dom元素 然后通过setOption渲染数据,最后在mounted中初始化。很麻烦。

vue-echarts 是ECharts 的 Vue.js 组件,基于 ECharts v4.1.0 + 开发,依赖 Vue.js v2.2.6 +,意思就是可以直接把echarts实例当中vue中的组件来使用,不用每次都获取dom、挂在dom,轻松使用echarts的所用功能。。。

v-charts 是基于vue2二次封装的图表组件库,功能没有echarts多 但也够用了,官网很详细,这里用一个官网例子说明问题。

以上,可跟据需求选用,如果需求简单可直接用 v-charts

在Vue中将echart封装为可复用组件

首先在项目中安装echarts

npm install echarts --save

1.动态设置id。为什么是动态,id是唯一的,这不用多说吧。

2.引入echarts

const echarts = require('echarts')

3.上面说过了id是唯一的,使用echarts.init这个方法来创建一个 ECharts 实例,返回 echartinstance,不能在单个容器上初始化多个 ECharts 实例,因此需要用到Vue的computed属性来解决这个问题

4.因为把它封装成了一个Vue组件,父子组件之间的通信需要用到props这个属性

5.封装echarts。

6.在Vue的生命周期mounted执行,并且在this.$nextTick里面执行这个方法,保证承若所有的子组件被挂载、能保证通过获取到组件

注意:

在父组件中调用子组件,如果是通过ajax获取的数据,需要在引入组件是判断一下数组或对象是否为空。

在Vue中使用echarts的两种方式

main.js

myCharts.js

HelloWorld.vue

除了全量引用echarts,我们还可以采用按需引入的方式

main.js

HelloWorld.vue

Vue封装echarts组件

1、最近做的项目是后台管理系统,里面含有各种的echarts的图标,一般的图表都是比较好绘制的,稍微比较难的世界地图和中国地图的绘制。

在vue中引入echarts,分两种情况引入,一种值npm安装包,另一种是cdn外部引入,但是这个对于一般的echarts绘制是没有影响的。

首先安装echarts依赖

你可选择全局导入,也可以在需要的页面导入。全局的话,在main.js里面,然后就可以变成全局的了,就不需要在局部引进echarts了

页面引用

最后利用混合混入,实现图表自适应的效果


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Vue/6618.html