百度地圖的模塊化加載方案
百度地圖的加載方式比較奇葩,比如百度提供的一個(gè) js 腳本地址是這樣http://api.map.baidu.com/api?v=2.0&ak=mXijumfojHnAaN2VxpBGoqHM
,直接使用瀏覽器訪問(wèn),這個(gè)文件的內(nèi)容是這樣:
百度地圖通過(guò)一個(gè)腳本再去請(qǐng)求另外一個(gè)腳本,這樣的方式可能是我見(jiàn)的少吧,感覺(jué)這樣會(huì)比較安全。
在直接訪問(wèn)后面這個(gè)網(wǎng)址,得到的就是真正的百度地圖api
文件了。
看起來(lái)好像直接轉(zhuǎn)成 requirejs 加載的方式?jīng)]有問(wèn)題,那就試試?
來(lái)了來(lái)了,控制臺(tái)非常精準(zhǔn)的出現(xiàn)了錯(cuò)誤:
第一個(gè)和第四個(gè)是控制臺(tái)打印出來(lái)的錯(cuò)誤信息,中間兩個(gè)是 requirejs 打印出來(lái)的錯(cuò)誤信息。其中第一個(gè)錯(cuò)誤只是黃色的感嘆號(hào)(因?yàn)楫?dāng)前請(qǐng)求的文件已經(jīng)加載,大概是提醒你異步加載的文件是不能再請(qǐng)求腳本的);最后一個(gè)錯(cuò)誤是紅色的叉,因?yàn)檫@里找不到BMap
這個(gè)對(duì)象。
好了,大概問(wèn)題知道了。如何解決?
經(jīng)過(guò)大量的查找,發(fā)現(xiàn) requirejs 有async
這樣一個(gè)插件,附上 requirejs 插件列表:https://github.com/requirejs/requirejs/wiki/Plugins
這個(gè)插件可以使當(dāng)前加載的 js 腳本采用異步的方式加載更多的腳本文件,官方原話是這樣的:
async : Useful for JSONP and asynchronous dependencies (e.g. Google Maps).
所以配置好 async.js
調(diào)用百度地圖的時(shí)候這樣寫:
這樣就能成功的使用模塊化的技術(shù)調(diào)用百度地圖了
附上個(gè)人博客對(duì)應(yīng)博文地址:
http://lancelot_lewis.coding.me/2016/05/24/requirejs/requirejs-map/
聯(lián)系客服