2010-10-03 1 views
7

может кто-нибудь объяснить мне, как Closure работает в более удобной для пользователя форме? Его помощь и документация ни к чему не приводят. Как вы выполняете простую задачу, такую ​​как выбор и изменение dom (например, выберите все на странице и скройте их)?запутанная библиотека закрытия Google api

ответ

7

См http://derekslager.com/blog/posts/2010/06/google-closure-introduction.ashx, сравнение # 4,

Скрыть все div «s:

<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

хороший источник. Спасибо. – jirkap

+0

Это показывает, действительно ли в поиске Google очень высокий уровень, не могли бы вы рассказать мне, куда идет query.js? query_test.html в third_pary отлично работает, но когда я добавляю query.js в google/dom и оператор require goog.dom.query по-прежнему недоступен. – HMR

+0

в каталоге goog в файле deps.js Я изменил goog.addDependency ('dojo/dom/query.js', и это сработало. – HMR

2

Я думал, что документы API были действительно хороши вначале, но после написания нескольких сотен строк кода я столкнулся со всеми видами причуд и проблем. Например, документация модуля dom не имеет четкой точки входа для обнаружения методов манипуляции с dom -> все ссылки верхнего уровня предназначены для вспомогательных объектов, которые он использует внутри. Вы можете найти полезные методы, но если в списке ссылок пакета вы нажмете dom, то DomHelper. Кажется, вам нужно создать экземпляр DomHelper, чтобы получить доступ к этим инструментам?

К счастью, они сделали включают в себя удобные ссылки на код по всем API-документам. Если вы сориентируете в источнике DomHelper, вы увидите, что большинство перечисленных методов доступны непосредственно из пространства имен goog.dom!

Моей другой основной проблемой является то, что документы часто не перечисляют типы аргументов/имена/описания. Например, если вы расширяете goog.dom.DomHelper.contains, он не перечисляет никаких аргументов, но код правильно аннотирует два аргумента. Я не могу поверить, что они сделали такую ​​полностью аннотированную и задокументированную библиотеку, а затем не смогли включить эту информацию в (сгенерированные) документы! Хотя при просмотре кода вы часто найдете краткие и неинформативные комментарии в своих аннотациях.

Итак, подведем итоги: прочитайте код! Я всегда ненавижу слышать этот ответ, но сейчас это лучший вариант.

У меня также есть книга О'Рейли Закрытие, и хотя она дает некоторые идеи, она по-прежнему не очень глубока, фактически используя основные шаблоны и инструменты, предоставляемые в библиотеке. Мне бы очень хотелось, чтобы лучше понять, как части библиотеки предназначены для взаимодействия. Думаю, кто-то должен сделать кулинарную книгу с закрытием?

+0

Я нахожу, что в коде гораздо полезнее, чем документы. прокомментировал. – Ally

Смежные вопросы