Меня озадачивает разница в дизайне между jQuery и API-интерфейсом UI Yahoo. Отказ от ответственности: у меня сильная неприязнь к jQuery api, но я также очень неосведомлен в веб-программировании и javascript в целом, поэтому я мог быть мертв неправильно и вернуться сюда, умоляя о выкупе. так долго...
Пункт моего вопроса заключается в следующем. Эти два варианта отличаются друг от друга. jQuery помещает DOM в центр и украшает DOM, выполняя на нем метод "триггера". Пример
$("#flexigrid").flexigrid()
Требование jQuery заключается в том, что в некоторых случаях вы должны заранее придерживаться определенной конкретной структуры для своего html. Пример:
<div id="accordion">
<h3><a href="#">First header</a></h3>
<div>First content</div>
<h3><a href="#">Second header</a></h3>
<div>Second content</div>
</div>
а затем
$("#accordion").accordion();
Кроме того, возвращаемый объект вообще не предоставляет никакого механизма для скрытия DOM с помощью удобного программного метода. Чтобы манипулировать сущностью jQuery, вам нужно получить доступ к DOM с помощью селекторов, доступ к которым в некоторых случаях не гарантируется, что его легко узнать, например, в случае внутренних идентификаторов. Предположим, что вы хотите поменять аккордеон программно, что вы делаете, это
$('#accordion').accordion('option', 'active', 2);
а не более интуитивно понятный
myAccordion.setActiveTab(2);
С другой стороны, yahoo ui фокусируется на объектах javascript, вы создаете их, передавая селектор DOM node (например, myDataTable = new YAHOO.widget.DataTable("container_id")
), а затем выполняете все манипуляции с помощью методов объекта. Хотите добавить новую строку? вызовите myDataTable.addRow()
. DOM скрыт. Вас не интересует, что происходит за кулисами.
Теперь, мой опыт работы с Trolltech QT хорошо подходит для пользовательского интерфейса Yahoo. Ясный, определенный API объектов виджетов, возможная свобода для повторной реализации части их через наследование, непрозрачный рендеринг, если вы не хотите открыть коробку и замарать руки. QT - выигрышный API, хорошо работает, он прост в использовании, а пользовательский интерфейс Yahoo похож на стиль дизайна. С другой стороны, jQuery работает в противоречивой (мне), очень открытой коробке, с уменьшенным API на своих объектах.
Достаточно разглагольствовать. Дело в том, что я предполагаю, что могу ошибаться в этом, но я хотел бы знать, почему. Каковы преимущества дизайна, связанные с интерфейсом jQuery-интерфейса (где DOM явно отображается, и вам, возможно, придется искать вещи, которые плагины jQuery автоматически создаются, поэтому вы можете наконец $(выбрать) их и присоединить события или изменить их содержимое) вместо того, чтобы скрывать все за объектами и товарными методами, такими как YUI?
Я не говорю о скорости, размере кода или количестве ввода. Я говорю о концепциях дизайна, таких как инкапсуляция, фокусировка на интерфейсах и простота доступа. Какой дизайн лучше, в каких ситуациях и почему?