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

MakeMeFeel 09.09.2015 16:36

Цитата:

Сообщение от trikadin
Но это плохой вариант.

почему? выглядит короче и читабельней

trikadin 09.09.2015 16:40

MakeMeFeel, при выводе текста разбить его на параграфы (<p>) гораздо разумнее -- потом можно задать параграфам стили, вроде отступа первой строки и какой-нибудь заглавной буквы, расстояние между параграфами и т. д. Плюс директива tag в snakeskin работает в DOM-режиме (когда шаблон компилируется непосредственно в DOM в браузере) лучше, т. к. сразу создаёт тег через createElement() , а вариант с replace, хоть и сработает в таком режиме, но будет хуже по производительности из-за юзания innerHTML и дополнительного разбора браузером.

kobezzza 09.09.2015 16:40

Фич реквесты лучше оставлять на гитхабе, но ок, я добавлю такой фильтр в ближайшем минорном релизе SS6 на выходных.

Будет так:
data|nl2br

trikadin 09.09.2015 16:42

К тому же, может понадобиться сделать такую операцию не с одним текстом на странице, а с двумя разными -- и тут тоже гораздо логичнее сделать что-то типа callBlock p(text1), callBlock p(text2).

MakeMeFeel 09.09.2015 16:54

Цитата:

Сообщение от kobezzza
Будет так:
data|nl2br

Спасибо добрый "Санта" :)

Цитата:

Сообщение от trikadin
и тут тоже гораздо логичнее сделать

data|nl2br ;) а не плодить блоки. Чем проще, тем проще вспомнить что оно делает.

MakeMeFeel 09.09.2015 16:56

trikadin,
У меня блоки короткие и плодить в них p, ничего не даст. Один, два переноса.

MakeMeFeel 09.09.2015 16:58

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

kobezzza,
только если можно не забыть, что остальной части данных html фильтр должен работать :)

kobezzza 09.09.2015 17:04

Цитата:

kobezzza,
только если можно не забыть, что остальной части данных html фильтр должен работать
Ну это понятно :)

kobezzza 19.09.2015 21:29

Забыл тут написать, что вышел очередной релиз SS ветки 6. В основном багфиксы. Добавлен фильтр nl2br.

Mаxmaxmаximus 19.12.2015 08:46

Я тут новый язык шаблонов для юишки пилю, как вам пасоны? как джейд тока круче, больше придется добавлять префиксы к кастомным атрибутам так как при компиляции движок поймет что раз есть директива с таким именем то значит надо при превращении в html добавить префикс)) ну грубо говоря.

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




А вот как бы это было написано на jade например




Правда еще префиксы надо добавлять чтобы не было конфликта с обычными атрибутами (вдруг потом в html10 атрибут repeat добавят), вот так щас приходится писать в jade:



СРАВНИТЕ ВОТ С ЭТИМ:




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

кстати messages in Message или message in @messages это обычные строки синтаксис которых не определен, там могло быть написано хоть "апывавпаав 434 334 34 34", и директива repeat или range например должна была бы быраспарсить эту строгу и выдернуть нужное) как щас она делает со строкой message in @messages

создатель директивы сам решает че туда передавать и в каком формате, но я заготовил пару парсеров для выражений через запятую типа name, 1+2, 33 он распарсит эту строку в массив, ну парсинг частого выражения name as val in arr которое во всяких итераторах используется тоже добавил, можно будет свои пресеты выражений создавать и вообще я думаю это дело как-то стандартизировать чтобы потом можно было подсветку выражений организовывать. все таки это же не просто строки а какой то код и он чето делает.

потому шо я могу организовать подсветку в подстановках {{1+2}} потому что там банальный кофескрипт. А вот строку которую мы в атрибут передаем, которая тоже мини логику несет, я как то не стандартизировал.


А еще я хочу добавить че-то типа дубликатов атрибутов, ну знаете часто хочется это сделать в коде



И будет например если дублируется обычный атрибут то при рендере все значения просто сложатся и разделятся пробелом ну в случае с class например пригодится.

А если же это кастомный какой-то атрибут то я хочу чтобы туда какая-то функция вызывалась чтоле, то есть чтобы он конструировался один раз, но какая то функция типа init вызывалась несколько раз с разными значениями)) удобно? Удобно.

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

и вот эта логика опишется в функции init и эта функция вызовится несколько раз с разными значениями атрибута)

Ребят по моему это вообще прорыв и это самый лучший шаблонизатор который я видел.

Кто знает как на атрибутах красиво сделать свитч? я вот уже 3 года не знаю как придумать))). Или раз уж у нас свой синтаксис теперь то может какую нить хитрую конструкцию придумаем?

А еще думаю может чето типа таких логическх псевдоблоков запилить? а то логику в атрибутах элементов не всегда удобно писать. когда что то вроде "примени для этого элемента эту штуку" да, самое то, типа как настройки элемента. но когда это логика связанная именно С РАЗМЕТКОЙ карл. Тут нужно что-то ВНЕ блоков.



Че думаете? А при рендеринге я буду рендерить это в какие-то хитрые html комментарии которые че-то делают.

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



То есть текущий API уже позволяет реализовать такую логику, просто ужасно смотрится по этому я и не делал такое, но по сколкьу пилим шаблонизатор... ;)


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


А вообще, по скольку я создам компоненты на все свойства которые есть в style тогда можно будет писать вот так


и это вообще сказка)
прям как в css прикиньте)) тока динамически подвязка к яваскрипту.

при компиляии заменится на уже работающие сейчас
<ul class='ui-chat ui-button ui-text' style-position='absolute' style-width='100px' style-height='{{@height}}px'>


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