# 异步加载
当想要使用 AMap 对象时,我们为您提供了异步加载的方式, 在要使用 AMap 对象的组件中按以下方式引入,我们提供了 amapLoader 这个 Promise 对象,通过异步回调的方式得到 AMap 对象
全局引入
您可以在入口文件中全局引入,并将其绑定到 vue 上
WARNING
由于 AMap 是基于 Promise 异步引入的,因此,如果你在第一时间内访问 this.$AMap 获取 AMap 对象时,可能为 undefined 。
此时,需要适当的调整你代码执行的时机,例如将要执行的代码放入 $nexTick 中
main.js
import { amapLoader } from 'amap'
import Vue from 'vue'
amapLoader.then( AMap => Vue.prototype.$AMap = AMap)
要引入的组件
<script>
export default {
  mounted(){
      this.$nextTick(()=>{
        console.log(this.$AMap)
        // code 
      });
  }
}
</script>
局部引入
您也可以在单独的组件中引入,示例如下
<script>
import { amapLoader } from 'amap'
export default {
  mounted(){
    amapLoader.then(AMap => {
      // code
      console.log(AMap)
    })
  }
}
</script>
# 同步加载
- 第一步,在 
public/index.html中引入<script src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值""></script> - 第二步:更改你的 webpack 配置
 
- 如果是用vue-cli3搭建的项目 那么你在你的vue.config.js里面加上配置
 
  module.exports = {
      configureWebpack: config => {
        const externals = {
          AMap: 'window.AMap',
          Loca: 'window.Loca'
        };
        config.externals = { ...config.externals, ...externals };
      },
  }
- 如果是用 webpack 搭建项目,那么在 webpack.config.js 里加上配置
 
  module.exports = {
      externals: {
        AMap: 'window.AMap',
        Loca: 'window.Loca'
      },
}
- 第三步:在组件中引入高德对象
 
<script>
import AMap from 'AMap'
export default {
  mounted(){
    var map = new AMap.Map('container', {
        zoom: 4,
        center: [102.342785, 35.312316]
    });
  }
}
</script>