Вот мой простой пакет карт Google, который предоставляет аналогичный шаблон дизайна, который вы запрашиваете:
клиент/lib/google-maps.js :
GoogleMaps={
// public methods
config:function(options){
_.extend(this,options);
},
ready:function(){
this._loadingDependency.depend();
return this._ready;
},
// private methods
_loaded:function(){
this._ready=true;
this._loadingDependency.changed();
},
// public members
apiKey:"",
// private members
_ready:false,
_loadingDependency:new Deps.Dependency()
};
_googleMapsLoaded=function(){
GoogleMaps._loaded();
};
Meteor.startup(function(){
if(!GoogleMaps.apiKey){
throw new Meteor.Error(-1,"API key not set, use GoogleMaps.config({apiKey:YOUR_API_KEY});");
}
$.getScript("https://maps.googleapis.com/maps/api/js?key="+GoogleMaps.apiKey+"&callback=_googleMapsLoaded");
});
package.js (ВНИМАНИЕ, Meteor ‹ 0.9 API пакетов, ожидайте серьезных изменений в ближайшем будущем)
Package.describe({
summary:"Google Maps packaged for Meteor."
});
Package.on_use(function(api){
api.use(["jquery","deps"],"client");
//
api.add_files([
"client/lib/google-maps.js"
],"client");
//
api.export(["GoogleMaps","_googleMapsLoaded"],"client");
});
Таким образом, в основном это простой пакет, который позволяет пользователю указать свою собственную клиентскую сторону ключа API Google с помощью этого вызова: GoogleMaps.config(...);
Когда API карт полностью загружается, мы получаем уведомление с помощью метода реактивной готовности.
Я использую традиционный стиль программирования ООП, чтобы различать то, что предоставляет пакет, и то, что является приватным для реализации. Пакет экспортирует только общедоступный объект верхнего уровня (GoogleMaps), который можно настроить через общедоступный интерфейс. Затем вы можете ссылаться на GoogleMaps.apiKey в реализации пакета, как вы просили.
person
saimeunt
schedule
09.08.2014