Vue组件中如何引入外部js文件,动态插入js文件,vue引入百度地图api
最近项目中需要引入百度地图api的js文件,刚开始想这还不简单,直接通过script引入,结果发现不行
vue不支持下面的引入方式
<script src="http://api.map.baidu.com/getscript?v=2.0&ak=yourak&services=&t=20190123111209"></script> <script> export default{ .... } </script>
vue中引入js需要通过import,因此考虑写一个动态加载js的功能,可以结合Promise,js加载成功,调用resolve,js加载失败,调用reject
loadJs,传入要加载的js地址
function loadJs(src) { return new Promise((resolve,reject)=>{ let script = document.createElement('script') script.type = "text/javascript" script.onload = ()=>{ resolve() } script.onerror = ()=>{ reject() } script.src= src document.getElementsByTagName('body')[0].appendChild(script) }) } export default loadJs
vue组件中调用
<script> import loadJs from '../../utils/base/loadJs' export default { name : 'Test', mounted(){ loadJs('http://api.map.baidu.com/getscript?v=2.0&ak=yourak&services=&t=20190123111209').then(()=>{ var map = new BMap.Map("allmap"); .... }) } } </script>
就是这么简单啊~~
如果是引入百度地图api,注意,api地址为
http://api.map.baidu.com/getscript?v=2.0&ak=yourak&services=&t=20190123111209
不要使用默认的api地址,因为这个地址返回的并不是真正的js内容,而是document.write(...),要使用document.write()中的js地址才可以
http://api.map.baidu.com/api?v=2.0&ak=您的密钥
点赞(1)