### [详解微信小程序中如何安装和引用ECharts?](https://www.prosaas.cn/article/16370) **Published:** 2021-10-19T02:55:18 **Author:** 5201314 **Excerpt:** 本篇文章给大家介绍一下微信小程序中使用 npm 引入 ECharts 的方法,希望对大家有所帮助!Apache… 本篇文章给大家介绍一下微信小程序中使用 npm 引入 ECharts 的方法,希望对大家有所帮助! ![](https://img.php.cn/upload/article/000/000/024/616e33122e602927.jpg) Apache ECharts 官方提供了在微信小程序中使用Echarts 的代码实例和 `ec-canvas` 组件,但是未发布 `npm` 包。 此项目在官方代码之上修改支持 `ec-canvas` 组件传入 `echarts` 可支持 `npm` 引入 `echarts` 或本地自定义构建后的 `echarts`,更符合 `Web` 开发体验。 并且发布 `npm` 包,支持小程序通过 npm 安装使用。并支持 `Taro` 按需引入 `echarts` 减小打包体积。【相关学习推荐:小程序开发教程】 ## 安装 npm install echarts-for-weixin ## 小程序引用 参考代码 `tools/demo` 1、首先在页面的 json 文件加入 usingComponents 配置字段 { "usingComponents": { "ec-canvas": "echarts-for-weixin" } } 2、项目根目录创建 `package.json` 并执行 npm install 安装依赖 { "dependencies": { "echarts": "^5.1.2", "echarts-for-weixin": "^1.0.0" } } 3、小程序开发者工具中构建 npm 点击开发者工具中的菜单栏:工具 --> 构建 npm ![](https://img.php.cn/upload/image/816/726/431/1634611226657390.png) 4、在页面中引入 `echarts`,可以从 `npm` 引入 `echarts`,也可以引入本地自定义构建的 `echarts` 以减小体积 import \* as echarts from 'echarts' // 从 npm 引入 echarts import \* as echarts from './echarts' // 或者从本地引入自定义构建的 echarts 5、然后可以在对应页面的 wxml 中直接使用该组件 6、`ec-canvas` 的具体用法和如何初始化图表请参考 Echarts 官方小程序示例 import \* as echarts from 'echarts' let chart = null; function initChart(canvas, width, height, dpr) { chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // new }); canvas.setChart(chart); var option = { tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' }, confine: true }, legend: { data: \['热度', '正面', '负面'\] }, grid: { left: 20, right: 20, bottom: 15, top: 40, containLabel: true }, xAxis: \[ { type: 'value', axisLine: { lineStyle: { color: '#999' } }, axisLabel: { color: '#666' } } \], yAxis: \[ { type: 'category', axisTick: { show: false }, data: \['汽车之家', '今日头条', '百度贴吧', '一点资讯', '微信', '微博', '知乎'\], axisLine: { lineStyle: { color: '#999' } }, axisLabel: { color: '#666' } } \], series: \[ { name: '热度', type: 'bar', label: { normal: { show: true, position: 'inside' } }, data: \[300, 270, 340, 344, 300, 320, 310\], itemStyle: { // emphasis: { // color: '#37a2da' // } } }, { name: '正面', type: 'bar', stack: '总量', label: { normal: { show: true } }, data: \[120, 102, 141, 174, 190, 250, 220\], itemStyle: { // emphasis: { // color: '#32c5e9' // } } }, { name: '负面', type: 'bar', stack: '总量', label: { normal: { show: true, position: 'left' } }, data: \[-20, -32, -21, -34, -90, -130, -110\], itemStyle: { // emphasis: { // color: '#67e0e3' // } } } \] }; chart.setOption(option); return chart; } Page({ data: { echarts, ec: { onInit: initChart } }, onReady() { setTimeout(function () { // 获取 chart 实例的方式 console.log(chart) }, 2000); } }) ## Taro 引用 参考代码 `examples/taro` ### 准备工作 1. 安装依赖 npm install echarts-for-weixin 2. 在项目根目录中新建文件 `project.package.json` 或者自定义命名,此文件是小程序的 `package.json`,并在下一步中添加小程序自定义构建 npm 方式。这么做的目的是为了能够共享项目 `node_modules` `project.package.json` { "dependencies": { "echarts": "^5.1.2", "echarts-for-weixin": "^1.0.2" } } 3. 在 `project.config` 的 `setting` 中添加小程序自定义构建 npm 方式,参考 自定义 node\_modules 和 miniprogram\_npm 位置的构建 npm 方式 { "setting": { "packNpmManually": true, "packNpmRelationList": \[ { "packageJsonPath": "../project.package.json", "miniprogramNpmDistDir": "./" } \] } } 4. 执行 `Taro` 的开发或者打包命令进行项目开发 npm run dev:weapp 5. 小程序开发者工具中构建 npm。注意:小程序开发工具打开的项目目录是 `dist` 文件夹 点击开发者工具中的菜单栏:工具 --> 构建 npm ![](https://img.php.cn/upload/image/612/723/870/1634611232770243.png) ### 引入 Echarts 1. 在全局的 `app.config.js` 中添加或者在单个需要使用到 `echarts` 的页面配置中添加引用组件 { "usingComponents": { "ec-canvas": "echarts-for-weixin" } } 2. 在页面中引入 `echarts`,可以从 `npm` 引入 `echarts`,也可以引入本地自定义构建的 `echarts` 以减小体积 import \* as echarts from 'echarts' // 从 npm 引入 echarts import \* as echarts from './echarts' // 或者从本地引入自定义构建的 echarts 3. 将引入的 `echarts` 传给组件 4. `ec-canvas` 的具体用法和如何初始化图表请参考 Echarts 官方小程序示例 示例代码 function initChart(canvas, width, height) { const chart = echarts.init(canvas, null, { width: width, height: height }) canvas.setChart(chart) const model = { yCates: \['Saturday', 'Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday', 'Sunday'\], xCates: \['1', '2', '3', '4', '5'\], data: \[ // \[yCateIndex, xCateIndex, value\] \[0, 0, 5\], \[0, 1, 7\], \[0, 2, 3\], \[0, 3, 5\], \[0, 4, 2\], \[1, 0, 1\], \[1, 1, 2\], \[1, 2, 4\], \[1, 3, 8\], \[1, 4, 2\], \[2, 0, 2\], \[2, 1, 3\], \[2, 2, 8\], \[2, 3, 6\], \[2, 4, 7\], \[3, 0, 3\], \[3, 1, 7\], \[3, 2, 5\], \[3, 3, 1\], \[3, 4, 6\], \[4, 0, 3\], \[4, 1, 2\], \[4, 2, 7\], \[4, 3, 8\], \[4, 4, 9\], \[5, 0, 2\], \[5, 1, 2\], \[5, 2, 3\], \[5, 3, 4\], \[5, 4, 7\], \[6, 0, 6\], \[6, 1, 5\], \[6, 2, 3\], \[6, 3, 1\], \[6, 4, 2\] \] } const data = model.data.map(function (item) { return \[item\[1\], item\[0\], item\[2\] || '-'\] }) const option = { tooltip: { position: 'top' }, animation: false, grid: { bottom: 60, top: 10, left: 80 }, xAxis: { type: 'category', data: model.xCates }, yAxis: { type: 'category', data: model.yCates }, visualMap: { min: 1, max: 10, show: false, calculable: true, orient: 'horizontal', left: 'center', bottom: 10, inRange: { color: \['#37A2DA', '#32C5E9', '#67E0E3', '#91F2DE', '#FFDB5C', '#FF9F7F'\], } }, series: \[{ name: 'Punch Card', type: 'heatmap', data: data, label: { normal: { show: true } }, itemStyle: { emphasis: { shadowBlur: 10, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }\] } chart.setOption(option) return chart }export default class Echarts extends React.Component { state = { ec: { onInit: initChart } } render () { return ( ) } }复制代码 ## Taro 按需引用 参考代码 `examples/taro-manual-load` 注意:小程序开发者工具打开的项目目录是打包后的 `dist` 目录 ### 准备工作 1、安装依赖 npm install echarts-for-weixin 2、在项目根目录中新建文件 `project.package.json` 或者自定义命名,此文件是小程序的 `package.json`,并在下一步中添加小程序自定义构建 npm 方式。并配置 `config/index.js` 中的 `copy` 选项,将 `project.package.json` 复制到 `dist` 目录下并且重命名为 `package.json`。并且复制 `node_modules/echarts-for-weixin` 至 `dist/node_modules/echarts-for-weixin` 避免在小程序开发者工具中打开的项目重新安装依赖 `project.package.json` { "dependencies": { "echarts-for-weixin": "^1.0.2" } } `config/index.js` { copy: { patterns: \[ { from: 'project.package.json', to: 'dist/package.json' }, // 指定需要 copy 的文件 { from: 'node\_modules/echarts-for-weixin/', to: 'dist/node\_modules/echarts-for-weixin/' } \], options: {} } } 3、在 `project.config` 的 `setting` 中添加小程序自定义构建 npm 方式,参考 自定义 node\_modules 和 miniprogram\_npm 位置的构建 npm 方式 { "setting": { "packNpmManually": true, "packNpmRelationList": \[ { "packageJsonPath": "./package.json", "miniprogramNpmDistDir": "./" } \] } } 4、执行 `Taro` 的开发或者打包命令进行项目开发 npm run dev:weapp 5、小程序开发者工具中构建 npm。注意:小程序开发工具打开的项目目录是 `dist` 文件夹 点击开发者工具中的菜单栏:工具 --> 构建 npm ![](https://img.php.cn/upload/image/358/597/405/1634611238909691.png) ### **引入 Echarts** 1、在全局的 `app.config.js` 中添加或者在单个需要使用到 `echarts` 的页面配置中添加引用组件 { "usingComponents": { "ec-canvas": "echarts-for-weixin" } } 2、在页面中引入 `echarts/core` 和需要的组件,Taro 打包会只打包引入的组件,这样达到按需引入的目的 // Import the echarts core module, which provides the necessary interfaces for using echarts. import \* as echarts from 'echarts/core'; // Import charts, all with Chart suffix import { // LineChart, BarChart, // PieChart, // ScatterChart, // RadarChart, // MapChart, // TreeChart, // TreemapChart, // GraphChart, // GaugeChart, // FunnelChart, // ParallelChart, // SankeyChart, // BoxplotChart, // CandlestickChart, // EffectScatterChart, // LinesChart, // HeatmapChart, // PictorialBarChart, // ThemeRiverChart, // SunburstChart, // CustomChart, } from 'echarts/charts'; // import components, all suffixed with Component import { // GridSimpleComponent, GridComponent, // PolarComponent, // RadarComponent, // GeoComponent, // SingleAxisComponent, // ParallelComponent, // CalendarComponent, // GraphicComponent, // ToolboxComponent, TooltipComponent, // AxisPointerComponent, // BrushComponent, TitleComponent, // TimelineComponent, // MarkPointComponent, // MarkLineComponent, // MarkAreaComponent, // LegendComponent, // LegendScrollComponent, // LegendPlainComponent, // DataZoomComponent, // DataZoomInsideComponent, // DataZoomSliderComponent, // VisualMapComponent, // VisualMapContinuousComponent, // VisualMapPiecewiseComponent, // AriaComponent, // TransformComponent, DatasetComponent, } from 'echarts/components'; // Import renderer, note that introducing the CanvasRenderer or SVGRenderer is a required step import { CanvasRenderer, // SVGRenderer, } from 'echarts/renderers'; // Register the required components echarts.use( \[ TitleComponent, TooltipComponent, GridComponent, BarChart, CanvasRenderer, HeatmapChart, VisualMapComponent, VisualMapContinuousComponent, VisualMapPiecewiseComponent, \] ); 3、将引入的 `echarts` 传给组件 4、`ec-canvas` 的具体用法和如何初始化图表请参考 Echarts 官方小程序示例 function initChart(canvas, width, height) { const chart = echarts.init(canvas, null, { width: width, height: height }) canvas.setChart(chart) const model = { yCates: \['Saturday', 'Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday', 'Sunday'\], xCates: \['1', '2', '3', '4', '5'\], data: \[ // \[yCateIndex, xCateIndex, value\] \[0, 0, 5\], \[0, 1, 7\], \[0, 2, 3\], \[0, 3, 5\], \[0, 4, 2\], \[1, 0, 1\], \[1, 1, 2\], \[1, 2, 4\], \[1, 3, 8\], \[1, 4, 2\], \[2, 0, 2\], \[2, 1, 3\], \[2, 2, 8\], \[2, 3, 6\], \[2, 4, 7\], \[3, 0, 3\], \[3, 1, 7\], \[3, 2, 5\], \[3, 3, 1\], \[3, 4, 6\], \[4, 0, 3\], \[4, 1, 2\], \[4, 2, 7\], \[4, 3, 8\], \[4, 4, 9\], \[5, 0, 2\], \[5, 1, 2\], \[5, 2, 3\], \[5, 3, 4\], \[5, 4, 7\], \[6, 0, 6\], \[6, 1, 5\], \[6, 2, 3\], \[6, 3, 1\], \[6, 4, 2\] \] } const data = model.data.map(function (item) { return \[item\[1\], item\[0\], item\[2\] || '-'\] }) const option = { tooltip: { position: 'top' }, animation: false, grid: { bottom: 60, top: 10, left: 80 }, xAxis: { type: 'category', data: model.xCates }, yAxis: { type: 'category', data: model.yCates }, visualMap: { min: 1, max: 10, show: false, calculable: true, orient: 'horizontal', left: 'center', bottom: 10, inRange: { color: \['#37A2DA', '#32C5E9', '#67E0E3', '#91F2DE', '#FFDB5C', '#FF9F7F'\], } }, series: \[{ name: 'Punch Card', type: 'heatmap', data: data, label: { normal: { show: true } }, itemStyle: { emphasis: { shadowBlur: 10, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }\] } chart.setOption(option) return chart } export default class Echarts extends React.Component { state = { ec: { onInit: initChart } } render () { return ( ) } } 5、可以查看小程序开发者工具中的依赖分析,确定文件大小以及是否正确按需引入 ![](https://img.php.cn/upload/image/813/434/190/1634611243625163.png) 更多编程相关知识,请访问:编程入门!! 以上就是详解微信小程序中如何安装和引用ECharts?的详细内容,更多请关注知企PROSAAS其它相关文章! **Tags:** apache, canvas, copy, echarts, for, JS, json, npm, taro, 微信小程序 **Categories:** 后端开发 ---