1

Тема: Реализация Haml/Less/Sass и поддержка в IDE

Разгреб чуток задачи, решил попробовать внедрить haml и что-нибудь для css. Что можно сказать... основные тезисы по пунктам:
1. Сам по себе haml очень понравился, читабельность шаблона возрастает раз в 10. Стили чуть хуже, но возможность задавать переменные, миксить и делать прочие кошерные вещи - тоже крайне понравилась. На этом все хорошее заканчивается.
2. Реализация haml на php пока еще сырая и в продакшен ее стремно пускать. Свежеустановленный форк Haml-парсера с гитхаба everzet (http://github.com/everzet/phphaml) хоть и имеет серию исправлений, но например даже простую конструкцию комментария "-#" из спецификации Haml не понимает и пропускает в вывод, вместо того чтобы удалять. Пришлось пофиксить. Также порадовал феерический баг с пустым массивом пользовательских конструкций. Чтобы все заработало - пришлось оставить одну конструкцию (slot/end_slot), чтобы массив не был пустой. Попутно отметил, что код слабо читабельный (код реализации less на порядок лучше).
3. И самое печальное - поддержка синтаксиса и подсветки в IDE. Вот что мы тут имеем:

Eclipse 5.3 поддерживает только haml и только при помощи плагина eclipsecolorer (http://colorer.sourceforge.net/eclipsecolorer/).
Не смотря на то, что этим плагином заявлена поддержка также sass, пользоваться этим невозможно - плагин фейлит синтаксис и показывает кучу ошибок на совершенно валидных участках. Наиболее феерично смотрятся фатальные ошибки на конструкции "color: #666" и "8.5pt" - во втором случае вообще подсвечивается красным все после точки.
Также стоит отметить тот факт, что .sass и .scss файлы распознаются и подсвечиваются совершенно по-разному, причем в .sass вообще нет валидатора - там можно написать любой бред и не будет никаких сообщений об ошибках.
Haml под ним более-менее юзабельный.
Less в эклипсе не поддерживается никак и никем, если не считать поддержкой вывод его плейн текстом.

NetBeans поддерживает haml при помощи плагина, естественно неофициального. Проблем меньше, но тоже хватает. Подсветка haml реально радует, но валидации синтаксиса также нет - можно написать любой бред.
С sass опять таки все сложнее: .scss не поддерживается вообще, а .sass имеет весьма скудную подсветку и глючит с многострочными комментариями. Тем не менее он более юзабелен, чем в Эклипсе.
Less в нетбинсах не поддерживается никак и никем, если не считать поддержкой вывод его плейн текстом.

Aptana - этот отпрыск Эклипсы заявляет поддержку haml и sass. Что мы имеем на самом деле...
Да, поддержка "искаропки", т.е. никаких плагинов доставлять не надо, все встроено. Поддержка Haml на том же уровне, что и у других, валидатора также нет, только подсветка. Scss не поддерживается, Sass поддерживается на том же уровне, что и в эклипсе - т.е. весьма ограниченно и с ошибками. Например все те же "8.5pt", хоть уже и не вызывают ошибки (может потому, что валидатора просто тупо нет), но подсветка точки и текста после нее отличается от подсветки 8.
Less в аптане... ну вы уже поняли default/smile

Итого, можно считать, что поддержки sass/scss/less в IDE просто нет, с haml дела обстоят получше. Как с этим можно работать - я пока хз. И хочется, и в то же время трахаться с этим как-то неинтересно...

P.S. Для тестов пришлось установить и запустить Netbeans, и соответственно вспомнились некоторые вещи, которые мне в нем крайне неприятны. Самая главная - это полное отсутствие возможности сделать видимыми спецсимволы - табы, пробелы, переводы строк и прочее. Багрепорт от 1999 года до сих пор в стадии New, и заявленную было поддержку этой фичи в последней версии 6.9 снова выпилили по причине сырости ее реализации. За 10 лет не смочь реализовать довольно таки элементарную фичу - это надо было сильно постараться. Я привык видеть код и разметку, как минимум для того, чтобы сразу наглядно видеть факапы типа смеси пробелов с табами и бить за это автора ногами в лицо. В связи с этим мне вообще интересно, как они заявляют поддержку Python (пусть даже и экспериментальную), где затесавшийся случайно и невидимый таб может легко стать черным днем программиста с "непонятными" фатальными ошибками. Вторая задница Netbeans - с момента открытия файла до момента его расцвечивания может пройти какое-то время, которое зависит от размера файла и языка.

2

Re: Реализация Haml/Less/Sass и поддержка в IDE

Спасибо за проделанную работу и подробный отчет.  Самому хочется попробывать haml

relo_san пишет:

Пришлось пофиксить.

Напиши автору, а лучше дай ему патч, пусть пофиксит default/smile

3

Re: Реализация Haml/Less/Sass и поддержка в IDE

default/smile дофикшу сначала. дело в том, что по спецификации комментарии могут быть не только однострочными, я же пока добавил поддержку только однострочных (просто многострочный пока не понадобился default/smile ). Собственно, хамл я наверно все-таки буду использовать уже сейчас, на всех своих проектах. Так что в ближайшее время его ждет объемное тестирование и масса багфиксов. А вот с less/sass все настолько плохо, что использовать пока рано default/sad По факту все его удобства съедаются практически полным отсутствием поддержки в иде, время на разработку будет уходить в итоге больше, чем на написание традиционных стилей.

4

Re: Реализация Haml/Less/Sass и поддержка в IDE

веди разработку вместе в everzet, phphaml опен соурс,

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

Смысла плодить кучу реализаций нет, так как по и того ни одна не будет жить

5

Re: Реализация Haml/Less/Sass и поддержка в IDE

Дык плодить вроде никто и не собирался. Хотя если бы было время - я бы переписал парсер, уж очень нескладная у него архитектура.
А изменения - отправлю конечно, на данный момент уже пяток багфиксов собралось по факту использования хамла. На sass решил забить, а вот less пошел практически "на ура". Благодаря его похожести на нормальный css IDE вполне сносно подсвечивают его после ассоциирования расширения .less с css файлами.

6

Re: Реализация Haml/Less/Sass и поддержка в IDE

less конечно хорош, но вот на большом проекте программеру полностью прийдется отвечать за css, когда с этой задачей вполне может справить верстальщик

7 Отредактировано relo_san (2010-07-21 00:41:51)

Re: Реализация Haml/Less/Sass и поддержка в IDE

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

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

P.S. Вот с хамлом все обстоит гораздо сложнее - его не каждый верстальщик осилит, и синтаксис у него сложнее, и правил намного больше. Хотя есть же верстальщики, которые верстают (и редактируют потом) шаблоны под смарти, и не жужжат default/smile Зато какая читабельность у шаблонов... Оно того стоит, чтобы один раз выучить и пользоваться.
Я думаю, топовые верстальщики очень быстро освоят и то и другое, как только появится более-менее серьезный объем задач, пока что это используют единицы (что собственно справедливо, учитывая количество багов в парсере).

8

Re: Реализация Haml/Less/Sass и поддержка в IDE

relo_san пишет:

Уверен, верстальщику проще выучить Лесс.

Я думаю им проще вообще ничего не учить default/smile.

Представляю себе объявление: ищем вестальщика со знаниями less, haml,... - такие кадры будут бесценные default/big_smile