# vue-echarts **Repository Path**: anydev/vue-echarts ## Basic Information - **Project Name**: vue-echarts - **Description**: Vue-ECharts 是一个 Vue 组件,旨在简化在 Vue 应用中集成 ECharts 的过程。它封装了 ECharts 的初始化和使用逻辑,用户只需要在 Vue 模板中添加组件并传递相应的 props,即可轻松创建图表。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: 2.x - **Homepage**: https://www.cnblogs.com/HaiJun-Aion/p/18569547 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-27 - **Last Updated**: 2024-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vue-ECharts > ECharts 的 Vue.js 组件。 基于 [ECharts](http://echarts.baidu.com/index.html) `v3.8.5`+ 开发,依赖 [Vue.js](https://vuejs.org/) `v2.2.6`+。 ## 安装 ### npm(推荐方式) ```bash $ npm install vue-echarts ``` ### bower ```bash $ bower install vue-echarts ``` ### 手动安装 直接下载 `dist/vue-echarts.js` 并在 HTML 文件中引入: ```html ``` ## 使用方法 ### 用 npm 与 vue-loader 基于 ES Module 引入(推荐用法) ```js import Vue from 'vue' import ECharts from 'vue-echarts/components/ECharts.vue' // 手动引入 ECharts 各模块来减小打包体积 import 'echarts/lib/chart/bar' import 'echarts/lib/component/tooltip' // 注册组件后即可使用 Vue.component('chart', ECharts) ``` #### ⚠️ 注意事项 ##### 引入源码版本 如果你正在使用 vue-cli 来创建项目并且希望使用未经转译的组件(引入 `vue-echarts/components/ECharts` 而非直接引入 `vue-echarts`)来减小打包尺寸(是推荐用法),那么 Vue 的 `webpack` 模板可能会把 `node_modules` 中的文件排除在 Babel 转译范围以外。要解决此问题,需要按下述的方式修改 `build/webpack.base.conf.js`: 对于 webpack 1.x: ```diff { test: /\.js$/, loader: 'babel', include: [ - path.join(projectRoot, 'src') + path.join(projectRoot, 'src'), + path.join(projectRoot, 'node_modules/vue-echarts') ], - exclude: /node_modules/ + exclude: /node_modules(?![\\/]vue-echarts[\\/])/ }, ``` 对于 webpack 2+: ```diff { test: /\.js$/, loader: 'babel-loader', - include: [resolve('src'), resolve('test')] + include: [resolve('src'), resolve('test'), resolve('node_modules/vue-echarts')] } ``` 如果你正直接配置使用 webpack,那么也请做类似的修改使其能够正常工作。 ### 在没有 ES Next 支持环境下用 npm 以 CommonJS 方式引入 ```js var Vue = require('vue') // 引入 UMD 模块 var ECharts = require('vue-echarts') // 或者在使用 vue-loader 时可以直接引入源码版本,并且手动 // 引入 ECharts 各个模块来减小打包尺寸 var ECharts = require('vue-echarts/components/ECharts') require('echarts/lib/chart/bar') require('echarts/lib/component/tooltip') // 注册组件后即可使用 Vue.component('chart', ECharts) ``` ### AMD ```js require.config({ paths: { 'vue': 'path/to/vue', 'vue-echarts': 'path/to/vue-ehcarts' } }) require(['vue', 'vue-echarts'], function (Vue, ECharts) { // 注册组件后即可使用 Vue.component('chart', ECharts) }) ``` ### 全局变量 组件将通过 `window.VueECharts` 变量暴露接口: ```js // 注册组件后即可使用 Vue.component('chart', VueECharts) ``` ## 调用组件 ```vue ``` 查看[这里](https://github.com/Justineo/vue-echarts/tree/master/demo)了解更多例子。 ### Props *(均为响应式)* * `initOptions` 用来初始化 ECharts 实例。 * `theme` 当前 ECharts 实例使用的主题。 * `options` ECharts 实例的数据。修改这个 prop 会触发 ECharts 实例的 `setOption` 方法。 * `group` 实例的分组,会自动绑定到 ECharts 组件的同名属性上。 * `auto-resize` (默认值:`false`) 这个 prop 用来指定 ECharts 实例在窗口尺寸变化时是否需要自动进行重绘。 * `watchShallow` (默认值:`false`) 这个 prop 可以用来关闭默认的对 `options` prop 的深度监听。对于有大量数据的图表,你可能会需要开启这个选项,来让 Vue 仅监听 `options` prop 本身的变化而忽略内部属性的变化。此时在需要重绘图表时,你需要重新设置 `options` prop 的直接引用,或者调用 `mergeOptions` 方法来手动管理图表内的数据(此时 `options` prop 的数据将不和图表内数据同步)。 ### 计算属性 * `width` **[只读]** 用来获取 ECharts 实例的当前宽度。 * `height` **[只读]** 用来获取 ECharts 实例的当前高度。 * `computedOptions` **[只读]** 用来读取 ECharts 更新内部 `options` 后的实际数据。 ### 方法 * `mergeOptions`(底层调用了 ECharts 实例的 `setOption` 方法) *提供了一个更贴切的名称来描述 `setOption` 方法的实际行为。* * `resize` * `dispatchAction` * `showLoading` * `hideLoading` * `convertToPixel` * `convertFromPixel` * `containPixel` * `getDataURL` * `getConnectedDataURL` * `clear` * `dispose` ### 静态方法 * `connect` * `disconnect` * `registerMap` * `registerTheme` ### 事件 Vue-ECharts 支持如下事件: * `legendselectchanged` * `legendselected` * `legendunselected` * `datazoom` * `datarangeselected` * `timelinechanged` * `timelineplaychanged` * `restore` * `dataviewchanged` * `magictypechanged` * `geoselectchanged` * `geoselected` * `geounselected` * `pieselectchanged` * `pieselected` * `pieunselected` * `mapselectchanged` * `mapselected` * `mapunselected` * `axisareaselected` * `focusnodeadjacency` * `unfocusnodeadjacency` * `brush` * `brushselected` * 鼠标事件 * `click` * `dblclick` * `mouseover` * `mouseout` * `mousedown` * `mouseup` * `globalout` 更多详细信息请参考 [ECharts 的 API 文档](https://ecomfe.github.io/echarts-doc/public/cn/api.html)。 ## 本地开发 ```bash $ npm i $ npm run dev ``` 打开 `http://localhost:8080/demo` 来查看 demo。