Мне нравится, как компилятор Google Closure оптимизирует символы в коде.Однако я не нашел хорошего способа определения общедоступных экспортируемых функций, которые принимают объекты конфигурации в качестве параметров.Рассмотрите этот фрагмент кода:
goog.provide('foo');
goog.require('goog.dom');
/** @typedef {{
* id : string,
* clazz : string
* }}
*/
foo.config;
/**
* Does some neat stuff
* @param {foo.config} config
*/
foo.myFoo = function(config) {
var el = goog.dom.getElement(config.id);
goog.dom.classes.add(el, config.clazz);
}
goog.exportSymbol('foo.myFoo', foo.myFoo);
Теперь предположим, что мы загружаем этот скрипт и хотим вызвать myFoo следующим образом:
<script type="text/javascript">
foo.myFoo({
id: 'unique-id',
clazz: 'pretty'
});
</script>
Если скомпилировано, это не будет выполнено, поскольку свойства id и clazzсжат.
Кто-нибудь знает элегантный способ реализации и экспорта объектов конфигурации с помощью компилятора Google Closure?