Mаxmaxmаximus, я уже давно использую подход, когда шаблонка генерит HTML для либы биндинга, вот например код из моего проекта (Snakeskin + Vue)
- include '../i-data/i-data' as placeholder - template [%fileName%](params) extends ['i-data'] - block body - super - block button < button.&__button :type = type | :form = form < span.&__wrapper < span.&__cell.&__pre-icon v-if = preIcon < b-icon :value = preIcon < span.&__cell.&__value <slot></slot> < span.&__cell.&__icon v-if = icon /// Вызов другого компонента Vue с параметром value < b-icon :value = icon < span.&__cell.&__progress-bar - wrap callBlock progress() < b-icon :value = 'cog' А вообще, коль уж ты удумал велосипедить, то глянул бы https://github.com/SnakeskinTpl/Snakeskin, я уже 3 года пилю этот движок, так что многое можешь у меня подсмотреть, тем более дока на вики весьма подробна. |
Цитата:
Или быдло типа думает что если пишешь допустим игровой движок, а уже до этого существовали движки, и ну РАЗ И ТУТ ДВИЖОК И ТАМ ДВИЖОК ТО ЗНАЧИТ ВЕЛОСИПЕД)) и пофиг что ты пишешь лучше и таким образом развиваешь индустрию, типа раз там название "Движок" и там "движок" то мозг быдла не анализирует сами движки, а думает приметивно "ну раз чел делает движок, а движок до этого уже был, значит он делает то что до этого уже было, значит надо испольозвать поговорку про велосипед" типа того)? Цитата:
меня интересует чисто истетическя красота кода для пользователя (то есть программиста) это примерно 90% важости для меня) а зачем ты пишешь < если и так очевидно что слово это тег? люди гораздо чаще именно теги пишут чем какой то текстовый контент, по этиому я бы ДЛЯ ТЕКСТА придумал какой то спец символ типа | а для тегов не должно быть ничего, просто слово и все, это более логично чем у тебя) ужасный шаблонизатор просто, просто непродуманый, ты уж извини но я правду говорю. вот именно из за такого бреда на рынке я и пилю свои решения, и удивляюсь когда кто то выдает стайлус и кофескрипт или джейд, которые сделаны такими какими бы их сделал Я. элементарные логические вычисления произведены разрабоичиком. это чувствуется. а у тебя нет. вот зачем теги выделять < если они чаще чем текст пишутся? значит надо было выделитель текста придумать а не тегов. вот пример логической непродумки. и такое сплош и рядом) ну как тут не пилить свой шаблонизатор? кстати надо у джейда тырить тогда уж раз я под него кошу |
Цитата:
Цитата:
Цитата:
|
ооо слушай, я у тебя тогда много других штук подчерпну всякие наследования миксины и прочее
вот чtго мне точно не хватало, потому у меня стояла проблема либо я целиком переписываю шаблон, либо вообще его не трогаю, а тут мы сможем внутрь залезать добавить разные приблуды типа блоки и все такое, плюс я придумаю для этого синтаксис красивый (кхе кхе) ![]() Кстати я не вижу ни одной причины логику в препроцессинг добавлять, она вообще есть? Я же чисто для юишки делаю шаблоны а там хочется чтобы логика динамическая была |
Цитата:
Цитата:
|
Цитата:
Имеет ли смысл делать логику препроцессинга? Например может это нужно при наследованиях всяких? типа тут див подцепи если у родителя не спан. но тогда логику надо будет делать на основе имено html разметки а не на основе яваскрипт данных. Ну то есть я могу напистаь логику в стиле посмотреть есть ли тег, если атрибут меньше то.. и.т.п. но ни какие яваскрипт данные в шаблонизатор мы передавать не должны ибо только в рантайме это будет происходить. Ну вот я и думаю. Имеет ли смысл делать логику препроцессинга? |
Цитата:
|
![]() чет проиграл)))) |
О, а вот щас уже не смешно
![]() |
А что тебе тут не нравится, кроме того, что теги нужно создавать директивой? & (как в Stylus) - это ссылка на родительский класс, для БЭМ, а так больше я ничего и не вижу.
Кстати, СС (как и Стилус) поддерживает 2 синтаксиса: - template hello(name = 'world') < .hello Hello {name}! {template hello(name = 'world')} <div class="hello"> Hello {name}! </div> {/template} |
Цитата:
|
Цитата:
И ключевое слово "тебе кажется", ты зашёл, глянул пример и пошёл кидаться какашками с привычным для себя видом "я гений, а вы все говно". Я же по доброте душевной хотел дать тебе где "подглядеть", чтобы не пилить коней в вакууме, больше я не повторю эту ошибку. Что каcается тегов: меня люто бесит Jade, за такое неявное и не логичное поведение. Я сторонник правила "явное лучше не явного". PS: модеры, перенесите этот оффтоп в тему SS. |
Цитата:
и ни слова ни про компоненты ни про контроллеры Цитата:
Цитата:
Цитата:
мой ответ можно переформулировать на Цитата:
|
Давно тут не писал. После паузы в разработке (по личным причинам) вернулся с новыми силами к СС7, над которым тружусь уже около года. Сейчас вместе с Trikadin занимаюсь формированием спецификации и обкатке фич семёрки. Оптимистично могу сказать, что к концу февраля я таки закончу работу.
Из последних идей, которые я планирую реализовать в семёрки - это декораторы, по аналогии с декораторами из JS. @typograf({lang: 'ru'}) - template foo() Hello "world" ! В примере выше я применил функцию-декоратора, которая будет обрабатывать результат шаблоны через библиотеку-типограф. Декораторы будут наследоваться, а также будет возможно доопределять или переопределять их в дочернем шаблоне. |
Вот ты офигеешь когда я все это у тебя стырю за 2 месяца и оберну в крутой синтаксис))) ты будешь вынужден перейти на темную сторону силы и стать моим контрибьютером) а вообще ты делаешь то о чем все мечтали но непонятно почему до сих пор не сделали, по сути у тебя нормальный html препроцессор
|
Цитата:
Я даже сейчас подумал, что могу добавить просто очередной флаг компиляции шаблона, как обрабатывать директивы-тегов, например, @= tagAsFirstWord true - template foo() .foo | Hello world! Сейчас при работе над СС7 я избавляюсь от исторической переусложнёности в пользу более простых и очевидных конструкций, например, прототипы будут смержены с вызываемыми блоками, что уберёт путаницу у новичков: - block index->menu(items) - block index->tree(params) @inline - template index() Таким образом флаг @inline будет означать, что парсер будет обрабатывать директиву как прототип, а не как блок. И таких изменений много. Можно сказать, что СС7 это стандартизация всех фич, ну и новые конечно :) |
Цитата:
всякие С++ придумывались когда не было нормальной подсветки синтаксиса в редакторах кода и эти скобочки визуально помогали глазу, сейчас же я при заработке учиываю все это. по этому я при разработке синтаксиса раскрашиваю его. у меня ВСЕ ЯВНО, и у тебя все ясно, но у меня синтаксис красота а у тебя жесть. НЕНУЖНЫЕ ИЗБЫТОЧНЫЕ например треугольные скобки в начале тегов. Ведь итак очевидно что это тег идет, зачем тогда ему скобочка? и.т.п. ты просто при разработке синтаксиса не учитывал что его можно раскрашывать редактором кода, в этом твоя ошибка. ты думал для явности надо добавить скобку или значек, но забыл про цвет) понял свою ошибку? скобочки и ЗНАЧКИ же лишь захламляют код и нужно стремится от них избавляться чтобы код был ЧИСТЫЙ) должна быть ОДНОЗНАЧНОСТЬ а не "явность" подчеркнутая двадцатью значками. например зачем в конце строки точка с запятой если конец строки это УЖЕ точка с запятой? и.т.п. дублирование функционала идет. если каждый атрибут на новой строке то зачем тогда ставить знак равно и кавычки в значении атрибута? и.т.п. div(style width: 100px) однозрачность есть? есть. а явность??? есть. цветом подсветится все что нужно и станет ЯВНО. поделился с тобой секретами создания синтаксисов) |
Цитата:
Цитата:
1) Я часто использую СС как генератор статичных страниц и мне приходится писать там много текста, поэтому для того, чтобы каждый раз не писать | перед текстом, я сделал "наоборот"; 2) Технически tag - это директива, поэтому сейчас Jade-like конвертор обрабатывает её как и все остальные директивы, хотя никто не мешает написать исключение; 3) Я использую СС для генерации не только XML подобных текстов, там это мешает. Цитата:
Цитата:
< ${someTag}.${someClass}#${someId} ${someAttr} = ${someValue} | ${someAttrsAsObject|attr} Типичный пример, который я часто пишу в своём коде, когда значение атрибута большое и разбиваю его на несколько строк: < div style = & color: red; text-decoration: false; . Цитата:
< .foo ng-(repeat = key in val | bind = foo) А во вторых, я часто разбиваю значение атрибута на несколько строк и мне такая "очевидность" нах не нужна :) Цитата:
Цитата:
|
Через неделю планирую выпустить SS7 alpha. А stable + дока в конце февраля.
|
Забыл написать тут радостную для меня новость: что основная разработка SS7 (около года разработки и 900+ коммитов) была успешно закончена и сейчас я занимаюсь тестами, а потом начну доку. Релиз пока планируется на конец февраля.
|
SS7 это что? Ваша библиотека?
|
Цитата:
|
Сглупил. Наоткрывал вкладки и читаю по очереди. На название темы не обратил внимание)
|
Вместе с выходом SS7 также выйдет новый проект std.ss - библиотека написанная на SS, которая содержит в себе различные полезные функции, например, директива сdn из SS6 была вынесена туда.
- namespace myApp - include 'node_module/std.ss/html' - template myTemplate() - doctype < html < head - with std.html += @cdn('jquery@2', 'yandex') += @cdn('fontAwesome@4') Такой подход позволяет легко расширять имеющийся функционал, например, добавим новую библиотеку в CDN - для этого просто создадим дочерний шаблон: - namespace mySTD - include 'node_module/std.ss/html' - template cdn(name, provider) extends std.html.cdn - block libraries() - super - putIn libraries.bootstrap.maxcdn - link css href = http://maxcdn.bootstrapcdn.com/bootstrap/${v}/css/bootstrap.min.css - script js src = http://maxcdn.bootstrapcdn.com/bootstrap/${v}/js/bootstrap.min.js |
Цитата:
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Сегодня закончил основной этап написания тестов и рад сообщить, что СС7 проходит их :) Завтра начну переводить свой проект на новые лыжи :)
|
Я правильно понимаю, что СС это шаблонизатор для всего вообще, не только для верстки?
|
Цитата:
У меня основной кейз СС: генерация статичных страниц, генерация страниц на сервере, генерация шаблонов для MVVM фреймворков и библиотек: Vue, React и т.д. Хотя "шаблонизатор" не совсем подходит для СС, это полноценный ОО язык для описания шаблонов. |
Сегодня смержил бранч в мастер, т.е. от релиза отделяет документация :)
|
Пример использования декораторов для интеграции библиотеки Typograf
- namespace demo - import Typograf from 'typograf' - template typograf(params) - block superWrapper(target) - block wrapper() - return new Typograf(params).execute(target.apply(this, arguments)) - return self.wrapper - return self.superWrapper - @typograf({lang: 'ru'}) - template simple() Привет "Мир"! -> Привет «Мир»! |
Выложил бету в npm. Все плагины были обновлены для использования с SS7.
http://codepen.io/kobezzza/pen/zrJNXx тут можно поиграться. |
kobezzza,
В нем есть функционал хранения шаблона на клиенте? |
Цитата:
|
SS - это язык???
Тогда приведи примеры где он явно показан в качестве транслируемого языка. Цитата:
CoffeeScript, TypeScript, SS тогда на этом фоне не мешало бы сравнение и обзор |
Цитата:
SS - ОО язык описания шаблонов, т.е. их сравнивать нет смысла. SS - это как Stylus, только Stylus для CSS, а SS для XML/TXT. Цитата:
|
все дошло портируем синтаксис HAML или Jade в шаблонизатор
спасибо вот с этого примера и начинал бы всегда, понравился потестирую |
Цитата:
|
Сегодня SS7 успешно скомпилил мой проект :)
|
Выпустил beta6. Помимо багфиксов содержит в себя 2 изменения:
1) Директива return теперь поддерживает запись блоком: - return < .foo 2) Флаг renderAs теперь может быть задан при декларации шаблона - template foo() @= renderAs 'template' Нужно это для точечного импорта функции при использовании include as |
> Если сравнивать объективно, то SS на много голов функциональнее того же Jade
И все же, конкретно, можно основные преимущества перед Jade озвучить (пытался искать по Jade в топике - не нашел)? Особо интересует - решена ли эта проблема? http://javascript.ru/forum/node-js-i...h-dannykh.html |
Часовой пояс GMT +3, время: 21:21. |