我喜欢 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 编译器实现和导出配置对象的优雅方式?