用AMD隐藏全局window.google.maps对象
Hide global window.google.maps object with AMD
我使用的是AMD模块模式,到目前为止,隐藏全局对象相对简单:
define([], function(){
/*jquery here */
var tmp = $;
$ = undefined;
return tmp;
}
然而,我很好奇是否有可能与谷歌的全局对象做类似的事情(我猜他们真的很喜欢这些…map和它的大部分api都使用em)。
只是做我之前做过的事情实际上破坏了代码,因为。谷歌内部似乎是通过调用全局窗口来自我引用自己。对象从脚本,它加载在飞行。
我将继续调查,但我很好奇你们都是怎么想的!谢谢。
如果你使用RequireJS作为你的AMD加载器,你可以使用config shims来包装非AMD模块,表达它们的依赖关系,执行任何必要的初始化(如果脚本支持的话,你可以清除它们的全局),并导出它们的全局。
对于Google Maps,它看起来像这样(不,你可能不想清除全局Google变量):
require.config({
paths: {
"maps": "https://maps.googleapis.com/maps/api/js?key=API_KEY"
},
shims: {
"maps": {
exports: "google.maps"
}
}
});
稍后,您可以将其用作常规AMD模块:
require(["maps"], function(maps) {
var map = new maps.Map(document.getElementById("map-canvas"), ....);
...
});
相关文章:
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 使用Google Maps API向标记添加多个字符
- Google Maps API OverlayView()在AngularJS指令中不起作用
- 使用Google Maps API驱动时间多边形
- 使用Google Maps JavaScript API v3和Geocoding API映射多个位置
- 在for循环中使用多维数组设置google.maps.Marker图标
- 可扩展的画布作为Google Maps Javascript API中的覆盖
- 在自动完成中使用Google Maps Places API;API不工作
- google.maps.event.addDomListener(window, 'load', fun
- 根据PHP中数组的长度在Google Maps API中循环遍历标记
- 加载Google MAPS API v3的JSON数据
- 如何使用Dojo引用Google Maps事件中的包含类
- Javascript:Google Maps API:如果地图加载在隐藏容器中,则为空白地图
- 如何在Ionic/Codova应用程序中保护我的Google Maps Javascript V3 API密钥
- 来自JSON数组的Google Maps API生成器
- Google Maps JavaScript API v3:getDetails(请求,回调),用于多个位置
- "现代的“;在Google Maps JS API v3上使用字母标记
- Google Maps Javascript v3 自定义控件子类化标准控件
- Google Maps panTo conflicts with addListener
- 来自plugin.google.maps(不是com.google.maps)的标记不会改变其位置