令人困惑的谷歌关闭库api

时间:2010-10-03 17:38:47

标签: javascript google-closure-library

有人可以向我解释Closure如何以更加用户友好的形式工作吗?它的帮助和文档使我无处可去。如何执行一项简单的任务,例如选择和修改dom(例如,在页面上选择全部并隐藏它们)?

2 个答案:

答案 0 :(得分:7)

参见http://derekslager.com/blog/posts/2010/06/google-closure-introduction.ashx,比较#4,

隐藏所有div

<html>
<head>
<script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js" type="text/javascript"></script>
<script language="JavaScript">
  goog.require('goog.dom.query');
  goog.require('goog.style');
</script>
<script> 
  function HideElement(selector) {
    goog.array.map(goog.dom.query(selector, null), function(e) { 
        goog.style.showElement(e, false); 
    });
  }
</script>
</head>
<body>
   <div>div</div>
   <p>paragraph</p>
   <div>another div</div>
   <input type="button" value="hide" onclick="HideElement('div');"/>
</body>
</html>

无法帮助您解决用户友好型故障。

答案 1 :(得分:2)

我认为API文档起初非常棒,但在编写了几百行代码之后,我遇到了各种各样的怪癖和问题。例如,dom模块文档没有明确的入口点来发现dom操作方法 - &gt;所有顶级链接都是内部使用的辅助对象。您可以找到一些有用的方法,但是如果在包参考列表中单击dom,那么DomHelper。看来你需要实例化一个DomHelper才能访问这些工具吗?

幸运的是,他们 在API文档的代码中包含了方便的链接。如果你在DomHelper源代码中找到答案,你会发现大多数列出的方法都是直接从goog.dom命名空间中获得的!

我的另一个主要抱怨是文档通常不会列出参数类型/名称/描述。例如,如果展开goog.dom.DomHelper.contains,它不会列出任何参数,但代码正确地注释了两个参数。我无法相信他们制作了这样一个经过全面注释和记录的库,然后未能将这些信息包含在(生成的)文档中!虽然在浏览他们的代码时,您经常会在他们的注释中找到简洁而无意义的评论。

所以,总结一下:阅读代码!我总是讨厌听到这个答案,但它现在似乎是最好的选择。

我也有O'Reilly Closure的书,尽管它确实提供了一些见解,但实际上使用库中提供的基本模式和工具仍然不是很深入。我真的希望更好地了解库的各个部分是如何进行交互的。我想有人应该制作一个封闭工具食谱?