【发布时间】:2010-10-03 17:38:46
【问题描述】:
有人可以向我解释一下闭包是如何以更用户友好的形式工作的吗?它的帮助和文档真的让我无处可去。您如何执行简单的任务,例如选择和修改 dom(例如,选择页面上的所有内容并隐藏它们)?
【问题讨论】:
标签: javascript google-closure-library
有人可以向我解释一下闭包是如何以更用户友好的形式工作的吗?它的帮助和文档真的让我无处可去。您如何执行简单的任务,例如选择和修改 dom(例如,选择页面上的所有内容并隐藏它们)?
【问题讨论】:
标签: javascript google-closure-library
参见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>
不过,无法帮助您进行用户友好的细分。
【讨论】:
一开始我认为 API 文档真的很棒,但是在编写了几百行代码之后,我遇到了各种各样的怪癖和问题。例如,dom 模块文档没有明确的入口点来发现 dom 操作方法 -> 所有顶级链接都是指向它在内部使用的帮助对象。如果在包引用列表中单击 dom,然后单击 DomHelper,您可以找到一些有用的方法。不过,您似乎需要实例化 DomHelper 才能访问这些工具?
幸运的是,他们确实在整个 API 文档的代码中都包含了方便的链接。如果您在 DomHelper 源代码中四处寻找,您会发现大多数列出的方法都可以直接从 goog.dom 命名空间获得!
我的另一个主要抱怨是文档通常没有列出参数类型/名称/描述。例如,如果您展开 goog.dom.DomHelper.contains 它不会列出任何参数,但代码正确地注释了两个参数。我不敢相信他们制作了如此详尽的注释和文档库,然后未能将这些信息包含在(生成的)文档中!虽然在浏览他们的代码时,您也经常会在他们的注释中发现简洁且信息量不大的 cmets。
所以,总结一下:阅读代码!我总是讨厌听到这个答案,但这似乎是目前最好的选择。
我也有 O'Reilly Closure 这本书,虽然它确实提供了一些见解,但在实际使用库中提供的基本模式和工具方面仍然不是很深入。我真的很想更好地了解图书馆的各个部分是如何交互的。我想有人应该制作一本闭包工具食谱?
【讨论】: