Pull to refresh

В поисках идеального css-фреймворка. Maxmertkit widget manager

Reading time2 min
Views16K

Предыдущий пост с описанием фреймворка maxmertkit получил большой отклик. Фреймворк особенно понравился, почему-то, японцам, но наилучшую конструктивную критику и помощь я получил от хабрасообщества. Теперь к делу.
Нынешние фреймворки, включая мой, имеют модульную структуру. Но все эти модули в некоторой степени являются зависимыми друг от друга. Это плохо. Именно эту проблему я и хочу решить.

Приведу пример.
Предположим у меня есть виджет кнопка. Он входит в состав виджета группа. Я могу использовать кнопку как отдельно, так и в составе группы. Но что если я меняю кнопку по моему усмотрению? Тогда в составе группы она тоже изменится, но я хочу, чтобы в группе она выглядела как и прежде.
Хорошего решения этой проблемы, к сожалению, пока нет. Поэтому я приступил к своему второму проекту, который эту проблему решит: mwm (maxmertkit widget manager).

Вдохновленный идеей npm, я уже сделал сам менеджер (буду выкладывать позже со статьёй-пояснением), а сейчас занимаюсь разработкой портала с виджетами и темами.

Какие технологии используются?

  • nodejs используется менеджером для манипуляций с файлами, запросов к серверу и компиляции sass.
  • npm для успановки менеджера.
  • sass для компиляции css.
  • Сам mwm написан с помощью coffeescript.


Как это будет работать?

Например, для установки виджета кнопка (в html-коде нужно будет использовать класс .-btn)

mwm install btn

После этого менеджер скачает этот виджет, скомпилирует ваш фреймворк и результат запишет в css-файл. Все, что вам остается делать – это использовать его!
Если вам нужен виджет с определенными темами (которые вы нашли на портале), то

mwm install group -t error warning

Теперь вы можете использовать темы для этого виджета:

<div class="-group -error-">
	<a href="#" class="-btn">button 1</a>
	<a href="#" class="-btn">button 2</a>
</div>

Что же с зависимостью виджета group от виджета btn? Как и в nodejs, они независимы друг от друга. Это становится возможным благодаря SASS-коду, который генерируется с помощью nodejs и помещается в папку зависимостей конкретного виджета. Можете менять виджет btn, он не будет модифицирован внутри group.

Как и прежде в maxmertkit любая тема будет применима к любому виджету, но вы можете конкретно указать какую тему вы хотите использовать с каким виджетом. Это сокращает объем css-кода.

Публикация

Вы сможете публиковать виджеты точно так же, как и в npm.

Еще чуть-чуть автоматизации

Как и в npm, в maxmertkit widget manager есть файл maxmertkit.json, в котором описывается ваш css-фреймворк и его зависимости. То есть обнаружив новую версию css-виджета на портале, вы меняете его версию в maxmertkit.json и выполняете

mwm update

Точно так же вы можете менять темы, которые использует ваш виджет.

Я хотел выложить сам менеджер уже сейчас, но он бесполезен без портала, поэтому я опубликую все сразу. Сроки? Я планирую через два месяца. Пока я организовал сбор средств, деньги с которого пойдут на оплату сервера, где будет развернут maxmertkit-портал с виджетами, темами и модификаторами – https://www.bountysource.com/#fundraisers/85.
Спасибо за отзывы по поводу maxmertkit, я вам очень благодарен!

Сайт – http://maxmert.com/
Github – https://github.com/maxmert/maxmertkit
Tags:
Hubs:
Total votes 42: ↑37 and ↓5+32
Comments20

Articles