除了上篇文章在配置文件中修改之外,还有其他方法,
先重复第一种
module.exports = {
entry: './src/main.js',
externals:{
'BMap':'BMap'
},
...
}
然后在目标vue文件中调用
import BMap from 'BMap'
后来我有朋友介绍了一个挺实用的方法,跟百度api官网里的异步加载很像,完美的解决了这个问题。在vue论坛里发现有朋友遇到类似的挂载类库出错的问题,我把这个方法分享给他后也轻松解决了,所以我觉得有必要分享给更多人。废话不多说,首先跟入口js一样,新建一个map.js
export function MP(ak) {
return new Promise(function (resolve, reject) {
window.onload = function () {
resolve(BMap)
}
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://api.map.baidu.com/api?v=2.0&ak="+ak+"&callback=init";
script.onerror = reject;
document.head.appendChild(script);
})
}
在你的百度地图页面中调用(ak 就是你的密钥)
import {MP} from './map.js'
mounted(){
this.$nextTick(function(){
var _this = this;
MP(_this.ak).then(BMap => {
//在此调用api
})
同样的,挂载其他外部类库有问题时也可以尝试这样做。
对了,还可以这样引入地图
<script type =“text / javascript”
src =“http://api.map.baidu.com/api?key=&v=1.1&services=true”>
</ script>
或者
<script type =“text / javascript”
src =“http://api.map.baidu.com/api?v=1.0&ak=ui7X2CSu3ITjojARL4tILi5W1i9gkDVS”>
</ script>
其中,下面的代码也可以在C#中正常显示的:((AK为我的应用)