如图vue中通过script 标签引入外部JS,
mounted 的时候执行外部js的方法时报错
应该是script 引入的这个js 还未加载完成造成的,加载完成后,手动输入这个变量就不是未定义了
所以,要修复这个BUG的话,必须保证外部js 加载完成,但是我不知道如何保证JS加载完成.....请问大神们这要怎么弄呢?
如图vue中通过script 标签引入外部JS,
mounted 的时候执行外部js的方法时报错
应该是script 引入的这个js 还未加载完成造成的,加载完成后,手动输入这个变量就不是未定义了
所以,要修复这个BUG的话,必须保证外部js 加载完成,但是我不知道如何保证JS加载完成.....请问大神们这要怎么弄呢?
谢邀!
推荐在main.js
中引入echarts
并注册到vue
的原型上!
1、npm install echarts --save
2、在main.js
中:
import echarts from 'echarts';
Vue.prototype.$echarts = echarts;
3、现在可以在全局vue
获取到注册到原型上的$echarts
一点建议,一般echarts
在使用之前都需要进行初始化,所以在vue
中初始化最好这么做:
mounted() {
//将对象先获取到并存储起来,下面要用到的地方直接用存储起来的对象便可
//后面的对象除了使用document获取id以外,还可以通过ref的方式,具体可以自己尝试
//推荐使用ref来获取对象
this.obj_echarts = this.$echarts.init(document.getElementById('xxx'));
},
data(){
return {
obj_echarts: null
}
}
希望我的回答对你有所帮助!
现代浏览器应该是按顺序加载 js 的,因此在 head 里的 js 肯定会比 webpack 打包后插入的 js 先加载。
简单代码验证如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JS Order Test</title>
<script src="https://cdn.bootcss.com/echarts/4.0.4/echarts.min.js"></script>
</head>
<body>
<script>
console.log(echarts)
</script>
</body>
</html>
按理不会出现你所说的这个问题,但既然出现这样的问题了,webpack externals 配置了解一下。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答4.6k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
5 回答803 阅读
4 回答2.2k 阅读✓ 已解决
监听onload事件