VUE引入Echarts 打包文件过大——解决方法2:CDN引入

本文介绍了一种在Vue项目中通过CDN引入echarts的方法,不仅避免了打包时的体积膨胀,还保持了echarts的功能完整。只需在index.html中添加一行CDN链接,并在config.js中配置externals,即可在项目中直接使用echarts,无需额外引入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小伙伴们注意啊!敲黑板了啊!

由于在vue中按需引入echarts,虽然打包时比全局引入小了一半,但还是占很多内存。
所以经过不懈研究,发现了一个能让vue项目打包时更小的方法,就是CDN引入

CDN这个方法时真的很好用,打包之后发现基本没占啥空间。我所理解的CDN这个方法,就是相当于远程连接网上的资源,这么理解也不知道对不对哈~

详细步骤如下
在vue项目中的index.html文件里使用script标签引入echarts的CND文件
代码如下

<script src="https://cdn.bootcss.com/echarts/3.7.0/echarts.min.js"></script>

在config.js里配置externals 代码如下

export default {
    externals: {
        "echarts": "echarts"
    },
}

最后 直接在所要用到echarts图表的页面上 写需要的图表参数即可
也不需要使用import去引入

这个方法非常实用,在打包文件时会发现不会占空间

<think>好的,我现在要帮助用户在Vue项目中通过CDN方式引入ECharts库,并在Vue文件中使用它来实现图表功能。首先,我得回想一下用户提供的引用内容,看看里面有没有相关的信息。 根据引用[1]和引用[5],用户提到可以通过CDN或npm安装ECharts,并且在main.js中进行挂载。特别是引用[5]详细说明了在App.vue引入组件并注册的步骤,虽然这是针对引入本地组件的情况,但CDN的方式可能要不同的处理。引用[1]中的示例代码展示了在main.js中通过import语句引入ECharts,但用户想用CDN,所以可能要调整这部分。 首先,用户要在HTML文件中通过script标签引入EChartsCDN链接,而不是使用npm安装。这通常在public/index.html中添加。接着,在Vue的main.js中,可能要将ECharts挂载到Vue的原型上,这样各个组件就可以通过this.$echarts来访问。不过,使用CDN的话,ECharts可能会被挂载到全局变量window.echarts,所以可能要调整引入方式。 接下来,在具体的Vue组件中,用户要在mounted生命周期钩子中初始化图表。引用[2]和引用[4]提到在mounted中使用echarts.init来初始化图表实例,其中引用[4]还用了Vue3的markRaw来处理响应式问题。这里要注意,如果用户用的是Vue3,可能要使用ref和markRaw,而Vue2的话可能不要。 另外,引用[1]中提到高版本ECharts要使用import * as echarts from 'echarts',但通过CDN引入的话,可能不要import,而是直接使用全局变量。比如,在CDN引入后,ECharts可能存在于window.echarts,所以在组件中可以直接使用echarts.init,而不要import语句。不过用户可能要在main.js中将全局的echarts挂载到Vue原型上,方便组件访问,类似于引用[1]中的做法,但要调整导入方式。 步骤概是这样的: 1. 在index.html中添加CDN脚本标签。 2. 在main.js中挂载EChartsVue原型,使用window.echarts。 3. 在组件中通过this.$echarts访问,并在mounted生命周期中初始化图表。 要注意的是,CDN引入可能会导致ECharts的按加载困难,所以如果用户要特定的组件或模块,可能要额外引入对应的CDN文件。此外,版本兼容性也是一个问题,要确保CDN的版本与Vue项目兼容。 可能的问题点:用户可能在组件中直接使用import语句,而CDN方式不应该使用import,这会导致冲突。要确保组件中不出现import echarts的语句,而是通过全局变量或Vue原型来访问。 总结一下,步骤应该是: - 引入CDN到HTML。 - 配置Vue原型以使用全局ECharts。 - 在组件中初始化图表实例。 然后,根据这些步骤,编写具体的代码示例,并注意Vue2Vue3的差异,比如在Vue3中使用setup函数或composition API时的处理方式,可能要使用markRaw来避免响应式问题,如引用[4]所示。</think>### 分步指南:通过CDNVue项目引入并使用ECharts #### 1. 在HTML中引入CDN链接 在`public/index.html`的`<head>`或`<body>`末尾添加ECharts CDN脚本: ```html <!-- 示例使用官方5.x版本CDN --> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.2/dist/echarts.min.js"></script> ``` #### 2. 在Vue全局配置中挂载ECharts(以Vue2为例) 在`main.js`中将ECharts绑定到Vue原型: ```javascript // Vue2写法 import Vue from 'vue' Vue.prototype.$echarts = window.echarts; // 通过CDN全局变量挂载 ``` #### 3. 在Vue组件中使用图表 在组件模板中定义图表容器: ```html <template> <div id="myChart" style="width: 600px; height: 400px;"></div> </template> ``` 在脚本中初始化图表: ```javascript export default { mounted() { // 通过this.$echarts访问 const myChart = this.$echarts.init(document.getElementById('myChart')); myChart.setOption({ xAxis: { type: 'category', data: ['A', 'B', 'C'] }, yAxis: { type: 'value' }, series: [{ data: [10, 20, 30], type: 'bar' }] }); } } ``` #### 4. 针对Vue3的调整(使用Composition API) 若使用Vue3,在`main.js`中通过`app.config.globalProperties`挂载: ```javascript // Vue3写法 import { createApp } from 'vue'; const app = createApp(App); app.config.globalProperties.$echarts = window.echarts; ``` 组件中使用`markRaw`避免响应式问题: ```javascript import { onMounted, markRaw } from 'vue'; export default { setup() { onMounted(() => { const chartDom = document.getElementById('myChart'); const myChart = markRaw(echarts.init(chartDom)); // 使用markRaw myChart.setOption({ /* 配置项 */ }); }); } } ``` ### 注意事项 - **版本兼容性**:CDN版本与代码语法匹配(例如v5.x支持按加载模块)。 - **按加载**:若地图、3D图表等模块,额外引入对应CDN文件: ```html <script src="https://cdn.jsdelivr.net/npm/echarts-gl@2.0.9/dist/echarts-gl.min.js"></script> ``` - **错误排查**:若出现`init undefined`,检查CDN是否加载成功或版本是否过高[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值