mat*_*y-d 5 javascript google-maps amd
我正在使用AMD模块模式,到目前为止,隐藏本来是全局对象的内容相对简单:
define([], function(){
/*jquery here */
var tmp = $;
$ = undefined;
return tmp;
}
Run Code Online (Sandbox Code Playgroud)
但是,我很好奇是否可以使用google的全局对象做类似的事情(我猜他们真的很喜欢这些..地图,几乎所有的API都使用em).
只是做我之前做过的事情实际上打破了代码,因为.似乎内部谷歌通过从动态加载的脚本调用全局window.google对象来自我引用自身.
我会继续调查但很好奇你们都在想什么!
谢谢.
小智 1
如果您使用RequireJS作为 AMD 加载程序,则可以使用配置填充程序来包装非 AMD 模块,表达它们的依赖关系,执行任何必要的初始化(如果脚本支持,您可以清除它们的全局)并导出它们的全局。
对于 Google 地图,这看起来像这样(不,您可能不想清除全局 google 变量):
require.config({
paths: {
"maps": "https://maps.googleapis.com/maps/api/js?key=API_KEY"
},
shims: {
"maps": {
exports: "google.maps"
}
}
});
Run Code Online (Sandbox Code Playgroud)
稍后,您可以将其用作常规 AMD 模块:
require(["maps"], function(maps) {
var map = new maps.Map(document.getElementById("map-canvas"), ....);
...
});
Run Code Online (Sandbox Code Playgroud)