Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Snakeskin (https://javascript.ru/forum/project/35057-snakeskin.html)

monolithed 28.06.2013 13:08

Цитата:

Сообщение от kobezzza
Вопрос же был про пых, а не про шелл

Хм. действительно.

Цитата:

Сообщение от kobezzza
Похоже на BEMHTML от Яндекса чем-то

Ага похоже, только гибче

Цитата:

Сообщение от kobezzza
div class="{PARENT_TPL_NAME ? PARENT_TPL_NAME + '__title' : ''} {TPL_NAME}__title"

А теперь представь что у тебя на сайте 100 тем (пример любой почтовой службы) и некоторые стили пересекаются.

В моем предствлении это будет так:
@set theme_1, theme_2, theme_3 < theme (data) {
    &.title: data.title
}

kobezzza 28.06.2013 13:39

Цитата:

Сообщение от monolithed (Сообщение 259006)
А теперь представь что у тебя на сайте 100 тем (пример любой почтовой службы) и некоторые стили пересекаются.

В моем предствлении это будет так:
@set theme_1, theme_2, theme_3 < theme (data) {
    &.title: data.title
}

Ну я же говорю, что у мя есть специальная прослоечка, которая делает нормальную реализацию БЭМ:) Только я не мешаю классы в html, а делаю @extend в Stylus, т.е.

<div class="b-me"> ... </div>


.b-me {
  @extend .b-about;
}


Т.е. у мя тоже всё гуд :) Единственное принципиальное отличие твоего подхода от моего, что ты полностью абстрагируешься от html, заменяя сущность тега, на сущность элемента, а у меня абстракция на уровне блоков, т.е. структура блока всё равно описывается старым добрым HTML:

{setBEM b-button, tag: 'span'}
{template bButton() extends iBlock}
	<button class="{this.blockName}__btn">
		...
	</button>
{end}


/// Пример вызова:
{bem b-button, name: '...', ...}Текст кнопки{end}


Но кстати, если у меня меняется именно тема, то я создаю не дочерний блок, а применяю модификатор: b-button_theme_dark и т.д.

monolithed 28.06.2013 14:55

Цитата:

Сообщение от kobezzza
Но кстати, если у меня меняется именно тема, то я создаю не дочерний блок, а применяю модификатор: b-button_theme_dark и т.д.

Согласен, мой пример не корректен )

kobezzza 05.07.2013 09:47

Небольшой апдейт: в скрипт трансляции добавлен сборщик файлов Jossy, т.е. если вы компилите шаблоны с помощью консольной команды snakeskin или с помощью фаел вотчера шторма, то вы можете использовать директивы вроде
//#include
для конкатенации файлов - это может быть очень удобным при разбиении шаблонов на разные файлы.

monolithed 06.07.2013 10:37

У меня тоже есть подобный препроцессор. Правда пока нельзя писать инструкции в виде комментариев )

А чем грант не подошел?

kobezzza 06.07.2013 11:13

Цитата:

Сообщение от monolithed (Сообщение 260514)
А чем грант не подошел?

Хз, я даже не пробовал, т.к. меня всем устраивает этот, да и простой как топор, юзаю его уже давно :)

ЗЫ: понравилась твоя либа для тестирования :)

monolithed 06.07.2013 11:39

Цитата:

Сообщение от kobezzza
ЗЫ: понравилась твоя либа для тестирования

У меня есть планы ее (пере|до)писать, есть некоторые баги + хочу сделать веб-интерфейс )

kobezzza 06.07.2013 11:45

Цитата:

Сообщение от monolithed (Сообщение 260518)
У меня есть планы ее (пере|до)писать, есть некоторые баги + хочу сделать веб-интерфейс )

Было бы оч круто реализовать прозрачную поддержку браузерной модели для тестирования в консольке, а ля phantomjs :)

monolithed 06.07.2013 11:52

Цитата:

Сообщение от kobezzza
Было бы оч круто реализовать прозрачную поддержку браузерной модели для тестирования в консольке, а ля phantomjs

Отладчик это все-таки отдельный иструмент

nerv_ 28.11.2013 15:59

kobezzza, у меня возник глупый вопрос: как ты навешиваешь обработчики событий для шаблонизируемых элементов? Через делегирование?

Хочется максимально простого и понятного кода. Допустим, когда я использую ангуляр, я пишу так:
<div ng-repeat="item in array"> <!-- повторить див столько раз, сколько элементов в массие -->
    <div ng-click="controller.click(item)"></div> <!-- навесить обработчик клика на каждый элемент -->
</div>

// упрощенный js
var controller = {
    click: function(item) {
        // item - элемент модели, по кот. кликнули
    }
};

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


Часовой пояс GMT +3, время: 09:13.