Skip to content

Instantly share code, notes, and snippets.

@App3x
Last active August 29, 2015 14:07
Show Gist options
  • Save App3x/938ba508599b549dd092 to your computer and use it in GitHub Desktop.
Save App3x/938ba508599b549dd092 to your computer and use it in GitHub Desktop.

Разделение имплементации и реализации компонентов

Идея заключается в отделении логики реиспользуемого компонента от интеграционной логики.

Модуль с реализацией должен возвращать конструктор, и ничего не должен знать про css/верстку. Модуль с интеграцией должен служить адаптером, между нашей версткой/css классами, в т.ч. блоко.

Конструктор реализции принимает словарь с параметрами компонента и словарь с элементами необходимыми для работы.

Предложение по блоко

Выносится вся логика блоко-элемента в отдельный файл и размещается в репе xhh например в ../js/HH/Logic/. Вся остальная интеграционная составляющая в таком же виде переносится так же в репу xhh. Механизм инициализации блоко-элемента делается идентичным с jsxComponents. Фактически Блоко становится обычым компонентом с xsl/css примесью в интеграционном адаптере.

Библиотека HH/Logic

Так как мы будем иметь набор реиспользуемых независимых компонентов, логично их выделить в отдельную библиотеку, которую можно будет использовать на стороне.

Возможных реализаций несколько. Например, утилитой из xhh можно будет по-необходимости собирать HH/Logic и пушить с поддержкой версионности в отдельный репозиторий, и использоваться с CDN.

Документация HH/Logic

При довольно простом переводое с обычных компонентов на "имплементационные компоненты", появляется необходимость краткой документации компонентов, можно использовать JSDoc-подобные коментарии, с кратким описанием компонента и с автоматической сборкой документации со всех компонентов, плюс можно прикрутить плюшки в виде поиска мест использований компонента при сборке и последующим упоминанием в доке.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment