Виджеты в TurboGears
Один из основных принципов дизайна TurboGears был и остается принцип «конструктора» — когда для реализации отдельных частей максимально используются готовые компоненты. Однако есть и компоненты написанные «с нуля» в рамках проекта. Наиболее интересным из них следует, пожалуй, признать виджеты (widgets).
Данный пост является попыткой вкратце объяснить концепцию TurboGears widgets, ее сильные и слабые стороны.
Теория
Виджет — это компонент веб-приложения и в этом смысле он близок понятию «компонент» (класс) парадигмы ООП. Можно также сказать, что виджет — этоВиджет это также функциональный «кирпичик», из которого строится веб-приложение и который потенциально может быть использован в разных контекстах.
Итак, TurboGears виджет:
- концептуально цельный элемент веб-приложения
- объединяет в себе данные, их представление и обработку
- пригоден к повторному использованию
Практика
Что же это означает на практике? Интерфейс абстрактного Widget-компонента выглядит так:
<code class="python"> class Widget: template = "kid:foobar.mytemplate" javascript = [JSLink("foobar", "baz.js")] def display(self, value, **kw): pass # display itself def validate(self, data): pass # validate data </code>
TurboGears предоставляет достаточно развитую библиотеку виджетов, которая обеспечивает реализацию «стандартных» возможностей и базу для создания новой функциональности.
Благодаря продуманному дизайну и удобству параметризации, виджет легко использовать в разных контекстах.
Скажем, у нас есть виджет, который отвечает за навигационное меню. Такой виджет может принимать параметр selected_item чтобы отображать текущий пункт меню особым образом. Другой пример — DataGridWidget, который отображает в табличном виде любые пригодные для этого данные.
На этом введение считаю законченным.
Не раскрытыми остались построение и работа с формами (widgets.Form, widgets.FormFields) и создание plug-n-play виджетов (см. Widgets на CogBin) — они достаточно объемны и требуют отдельного изложения.
2 коментарі
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.