【发布时间】:2011-11-03 20:02:39
【问题描述】:
我有一些以这种方式组织的 js 文件(请参阅source):
-
gmaps4rails.base.js:包含所有逻辑gmaps4rails.googlemaps.js:包含函数gmaps4rails.bing.js:包含与上一个文件同名的函数
所以基本上,base 调用 createMarkers(),这在 googlemaps 和 bing 中。
从现在开始,我只加载gmaps4rails.googlemaps.js 和gmaps4rails.googlemaps.js 中的一个,这取决于我需要的地图API,所以它工作正常。
现在我希望能够加载所有文件(并将它们分开),但当然只包含所需地图 API 的代码。
基本上我会考虑这样的事情:
if desiredApi == "googlemaps"
include GoogleMapsNameSpace content in BaseNameSpace
提前致谢。
【问题讨论】:
-
您是否尝试为
createMarkers()函数实现策略模式? -
这些函数是全局的吗?如果是,那就是问题所在。您不希望有一个包含一堆污染全局命名空间的全局函数的脚本 - 相反,对于您想要定义 one 全局名称(命名空间)的每个脚本,然后将所有内容(那些函数)在那个命名空间内。如果您这样做,您将能够轻松地包含(和使用)这两个脚本......
-
@whatgoodisaroad:我对js不够熟悉回答这个问题,我去看看定义
-
@Šime Vidas:我确实有两个命名空间
Base和GoogleMaps我如何将一个合并到另一个? -
@apneadiving 这不是真正的 JS 术语,策略模式是通用的 design pattern。基本上,它允许你通过一个统一的接口调用任意数量的实现。