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

kobezzza 19.12.2015 14:19

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
            &nbsp;

          < 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 года пилю этот движок, так что многое можешь у меня подсмотреть, тем более дока на вики весьма подробна.

Mаxmaxmаximus 19.12.2015 18:42

Цитата:

Сообщение от kobezzza
коль уж ты удумал велосипедить

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

Или быдло типа думает что если пишешь допустим игровой движок, а уже до этого существовали движки, и ну РАЗ И ТУТ ДВИЖОК И ТАМ ДВИЖОК ТО ЗНАЧИТ ВЕЛОСИПЕД)) и пофиг что ты пишешь лучше и таким образом развиваешь индустрию, типа раз там название "Движок" и там "движок" то мозг быдла не анализирует сами движки, а думает приметивно "ну раз чел делает движок, а движок до этого уже был, значит он делает то что до этого уже было, значит надо испольозвать поговорку про велосипед" типа того)?

Цитата:

Сообщение от kobezzza
https://github.com/SnakeskinTpl/Snakeskin

фу какой он некрасивый) я за один час придумал движок красивее чем твой) не в обиду но это так
меня интересует чисто истетическя красота кода для пользователя (то есть программиста) это примерно 90% важости для меня)

а зачем ты пишешь < если и так очевидно что слово это тег? люди гораздо чаще именно теги пишут чем какой то текстовый контент, по этиому я бы ДЛЯ ТЕКСТА придумал какой то спец символ типа | а для тегов не должно быть ничего, просто слово и все, это более логично чем у тебя) ужасный шаблонизатор просто, просто непродуманый, ты уж извини но я правду говорю. вот именно из за такого бреда на рынке я и пилю свои решения, и удивляюсь когда кто то выдает стайлус и кофескрипт или джейд, которые сделаны такими какими бы их сделал Я. элементарные логические вычисления произведены разрабоичиком. это чувствуется. а у тебя нет.

вот зачем теги выделять < если они чаще чем текст пишутся? значит надо было выделитель текста придумать а не тегов. вот пример логической непродумки. и такое сплош и рядом) ну как тут не пилить свой шаблонизатор?

кстати надо у джейда тырить тогда уж раз я под него кошу

kobezzza 19.12.2015 18:53

Цитата:

а зачем ты пишешь < если и так очевидно что слово это тег?
Не очевидно, особенно если я генерирую XML (например, SVG), а не HTML. К тому же я могу генерить любой текст, а не HTML впринципе, поэтому за создание тегов отвечает директива tag.

Цитата:

фу какой он некрасивый) я за один час придумал движок красивее чем твой) не в обиду но это так
Меня интересует чисто истетическя красота кода для пользователя (то есть программиста) это примерно 90% важости для меня)
Для меня важное гибкость и сахарные коробочные механизмы code-reuse. К тому же красота понятие относительное.

Цитата:

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

Mаxmaxmаximus 19.12.2015 19:00

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





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

kobezzza 19.12.2015 19:04

Цитата:

оо слушай, я у тебя тогда много других штук подчерпну всякие наследования миксины и прочее
Поэтому я и дал тебе ссылку. Там очень много интересных фич, которых ты не найдёшь в других движках, я объективно могу доказать, что SS самый функциональный движок для JS, а синтаксис дело вкуса - я делаю под свои взгляды и для себя и мне он нравится.

Цитата:

Кстати я не вижу ни одной причины логику в препроцессинг добавлять, она вообще есть? Я же чисто для юишки делаю шаблоны а там хочется чтобы логика динамическая была
У меня SS движок общего назначения, поэтому я использую его на сервере, на клиенте, как препроцессор для других либ (Angular, React, Vue), поэтому для меня кейзы есть.

Mаxmaxmаximus 19.12.2015 19:08

Цитата:

Сообщение от kobezzza
я объективно могу доказать, что SS самый функциональный движок для JS

Я с тобой согласен, пригляделся, оч круто (синтаксис говнище лютейщее просто я когда посмотрел сгенереный html даже он мне показался КРАСИВЕЕ КАРЛ, это повод задуматься над синтаксисом серьезно если шаблонизатор выглядит корявее того что он билдит), но я вот думаю, по скольку я пишу шаблонизатор чисто под юишку а в юишке логика динамическая, то имеет ли смысл логику в препроцессинг включать? Я думаю нет, ибо это меня сильно беист всегда. Я хочу использовать синтаксис логики джейда но сделать его динамическим рантаймовым.

Имеет ли смысл делать логику препроцессинга? Например может это нужно при наследованиях всяких? типа тут див подцепи если у родителя не спан. но тогда логику надо будет делать на основе имено html разметки а не на основе яваскрипт данных. Ну то есть я могу напистаь логику в стиле посмотреть есть ли тег, если атрибут меньше то.. и.т.п. но ни какие яваскрипт данные в шаблонизатор мы передавать не должны ибо только в рантайме это будет происходить.

Ну вот я и думаю. Имеет ли смысл делать логику препроцессинга?

kobezzza 19.12.2015 19:10

Цитата:

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

Mаxmaxmаximus 19.12.2015 19:11




чет проиграл))))

Mаxmaxmаximus 19.12.2015 19:12

О, а вот щас уже не смешно


kobezzza 19.12.2015 19:14

А что тебе тут не нравится, кроме того, что теги нужно создавать директивой? & (как в Stylus) - это ссылка на родительский класс, для БЭМ, а так больше я ничего и не вижу.

Кстати, СС (как и Стилус) поддерживает 2 синтаксиса:

- template hello(name = 'world')
  < .hello
    Hello {name}!


{template hello(name = 'world')}
  <div class="hello">
    Hello {name}!
  </div>
{/template}

Mаxmaxmаximus 19.12.2015 21:57

Цитата:

Сообщение от kobezzza
А что тебе тут не нравится, кроме того, что теги нужно создавать директивой?

Кроме этого? Ну если убрать это то надо добавлять у простого текста директиву и смотреть как будет смотреться, пока мне кажется тут слишком много синтаксиса, я всегда считал что можно не упрощая функционал не уродвать синтаксис, кофескрипт например так делает, и я трачу тонны времени чтобы изощрятья так чтобы сохраняя простоту не урезать функционал и очевидность, синтаксис надо продумывать около 30% времени разработки языка, это же ооочень важная часть языка, синтаксис чуть ли не самая важная часть языка.

kobezzza 19.12.2015 22:27

Цитата:

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

И ключевое слово "тебе кажется", ты зашёл, глянул пример и пошёл кидаться какашками с привычным для себя видом "я гений, а вы все говно". Я же по доброте душевной хотел дать тебе где "подглядеть", чтобы не пилить коней в вакууме, больше я не повторю эту ошибку.

Что каcается тегов: меня люто бесит Jade, за такое неявное и не логичное поведение. Я сторонник правила "явное лучше не явного".

PS: модеры, перенесите этот оффтоп в тему SS.

Mаxmaxmаximus 19.12.2015 22:41

Цитата:

Сообщение от kobezzza
Просто плохой пример. Я вывалил на голову девственного юзера кучу синтаксических фич, которые нужны в определённых юзкейсах и которые по началу кажутся не понятными. Я перепишу пример, где не буду извращаться.

Ну ты хотел показать все фитчи а нужно показывать наоборот хелоу ворлд где МИНИМУМ кода и синтаксиса)))) я например обучение юишки начинаю с {{3+4}} и мол ОГОО считается само!))
и ни слова ни про компоненты ни про контроллеры

Цитата:

Сообщение от kobezzza
больше я не повторю эту ошибку.

Да) реально отпугнуло, я задумался и ничего кроме < не нашел плохого.

Цитата:

Сообщение от kobezzza
PS: модеры, перенесите этот оффтоп в тему SS.

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

Цитата:

Сообщение от kobezzza
и пошёл кидаться какашками

я кидался какашками на синтаксис и только на синтаксис, про то что функционал я стырю 100% я не сомневался)


мой ответ можно переформулировать на

Цитата:

ОГО ТВОЯ ЛИБА ГЕНИАЛЬНА все стырю!
кстати. синтаксис говно лютое

kobezzza 19.12.2015 22:42

Давно тут не писал. После паузы в разработке (по личным причинам) вернулся с новыми силами к СС7, над которым тружусь уже около года. Сейчас вместе с Trikadin занимаюсь формированием спецификации и обкатке фич семёрки. Оптимистично могу сказать, что к концу февраля я таки закончу работу.

Из последних идей, которые я планирую реализовать в семёрки - это декораторы, по аналогии с декораторами из JS.

@typograf({lang: 'ru'})
- template foo()
  Hello "world" !


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

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

Mаxmaxmаximus 21.12.2015 20:04

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

kobezzza 21.12.2015 20:26

Цитата:

Вот ты офигеешь когда я все это у тебя стырю за 2 месяца и оберну в крутой синтаксис)))
Я могу поменять синтаксис хоть завтра, т.к. синтаксический препроцессор не связан с движком. Но мне нравиться он, т.к. он явный и это позволяет мне использовать СС для генерации чего угодно: html, xml, markdown и т.д.

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

@= tagAsFirstWord true

- template foo()
  .foo
    | Hello world!


Сейчас при работе над СС7 я избавляюсь от исторической переусложнёности в пользу более простых и очевидных конструкций, например, прототипы будут смержены с вызываемыми блоками, что уберёт путаницу у новичков:

- block index->menu(items)

- block index->tree(params) @inline

- template index()


Таким образом флаг @inline будет означать, что парсер будет обрабатывать директиву как прототип, а не как блок. И таких изменений много. Можно сказать, что СС7 это стандартизация всех фич, ну и новые конечно :)

Mаxmaxmаximus 21.12.2015 20:39

Цитата:

Сообщение от kobezzza
о мне нравиться он, т.к. он явный

Я считаю что должна быть ОДНОЗРАЧНОСТЬ а не явность, то есть если скобочка не обязательна ведь И ТАК ЕСТЬ ОДНОЗРАЧНОСТЬ что после ключа идут параметры, и скобочку добавлять ради ЯВНОСТИ тупость, явность должна обеспечиваться подсветкой синтаксиса в редакторе кода.

всякие С++ придумывались когда не было нормальной подсветки синтаксиса в редакторах кода и эти скобочки визуально помогали глазу, сейчас же я при заработке учиываю все это.

по этому я при разработке синтаксиса раскрашиваю его. у меня ВСЕ ЯВНО, и у тебя все ясно, но у меня синтаксис красота а у тебя жесть.

НЕНУЖНЫЕ ИЗБЫТОЧНЫЕ например треугольные скобки в начале тегов. Ведь итак очевидно что это тег идет, зачем тогда ему скобочка? и.т.п.

ты просто при разработке синтаксиса не учитывал что его можно раскрашывать редактором кода, в этом твоя ошибка. ты думал для явности надо добавить скобку или значек, но забыл про цвет) понял свою ошибку?
скобочки и ЗНАЧКИ же лишь захламляют код и нужно стремится от них избавляться чтобы код был ЧИСТЫЙ)

должна быть ОДНОЗНАЧНОСТЬ а не "явность" подчеркнутая двадцатью значками.
например зачем в конце строки точка с запятой если конец строки это УЖЕ точка с запятой? и.т.п. дублирование функционала идет.

если каждый атрибут на новой строке то зачем тогда ставить знак равно и кавычки в значении атрибута? и.т.п.
div(style width: 100px)

однозрачность есть? есть. а явность??? есть. цветом подсветится все что нужно и станет ЯВНО.

поделился с тобой секретами создания синтаксисов)

kobezzza 21.12.2015 20:48

Цитата:

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

Цитата:

ты думал для явности надо добавить скобку или значек, но забыл про цвет)
Вообще то нет, есть 3 основных причины:

1) Я часто использую СС как генератор статичных страниц и мне приходится писать там много текста, поэтому для того, чтобы каждый раз не писать | перед текстом, я сделал "наоборот";
2) Технически tag - это директива, поэтому сейчас Jade-like конвертор обрабатывает её как и все остальные директивы, хотя никто не мешает написать исключение;
3) Я использую СС для генерации не только XML подобных текстов, там это мешает.

Цитата:

скобочки и ЗНАЧКИ же лишь захламляют код и нужно стремится от них избавляться.
Я подумаю над добавлением опционального флага, но удалять точно не буду.

Цитата:

если каждый атрибут на новой строке то зачем тогда ставить знак равно и кавычки в значении атрибута? и.т.п.
div(style width: 100px)
Это выглядит громоздко, вдобавок в СС, в отличии от Jade всё вообще может интерполироваться, поэтому разделители нужны.

< ${someTag}.${someClass}#${someId} ${someAttr} = ${someValue} | ${someAttrsAsObject|attr}


Типичный пример, который я часто пишу в своём коде, когда значение атрибута большое и разбиваю его на несколько строк:

< div style = &
  color: red;
  text-decoration: false;
.


Цитата:

ставить знак равно и кавычки в значении атрибута?
Ну во первых кавычки в СС ставить не надо, а во вторых круглые скобки у меня юзаются для создания групп атрибутов:

< .foo ng-(repeat = key in val | bind = foo)


А во вторых, я часто разбиваю значение атрибута на несколько строк и мне такая "очевидность" нах не нужна :)

Цитата:

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

Цитата:

поделился с тобой секретами создания синтаксисов)
Нет, спасибо :)

kobezzza 09.01.2016 19:05

Через неделю планирую выпустить SS7 alpha. А stable + дока в конце февраля.

kobezzza 31.01.2016 19:23

Забыл написать тут радостную для меня новость: что основная разработка SS7 (около года разработки и 900+ коммитов) была успешно закончена и сейчас я занимаюсь тестами, а потом начну доку. Релиз пока планируется на конец февраля.

yazonnile 31.01.2016 19:33

SS7 это что? Ваша библиотека?

kobezzza 31.01.2016 19:46

Цитата:

Сообщение от yazonnile (Сообщение 405756)
SS7 это что? Ваша библиотека?

Странный вопрос. Эта тема посвящена моему ЯП для описания шаблонов Snakeskin (SS).

yazonnile 31.01.2016 22:16

Сглупил. Наоткрывал вкладки и читаю по очереди. На название темы не обратил внимание)

kobezzza 31.01.2016 23:49

Вместе с выходом 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

acf97b7a 01.02.2016 00:08

Цитата:

Сообщение от kobezzza
Релиз пока планируется на конец февраля.


kobezzza 02.02.2016 21:53

Сегодня закончил основной этап написания тестов и рад сообщить, что СС7 проходит их :) Завтра начну переводить свой проект на новые лыжи :)

yazonnile 02.02.2016 23:01

Я правильно понимаю, что СС это шаблонизатор для всего вообще, не только для верстки?

kobezzza 03.02.2016 00:17

Цитата:

Сообщение от yazonnile (Сообщение 406092)
Я правильно понимаю, что СС это шаблонизатор для всего вообще, не только для верстки?

Угу, но для генерации XML подобных документов есть специальные директивы.

У меня основной кейз СС: генерация статичных страниц, генерация страниц на сервере, генерация шаблонов для MVVM фреймворков и библиотек: Vue, React и т.д.

Хотя "шаблонизатор" не совсем подходит для СС, это полноценный ОО язык для описания шаблонов.

kobezzza 03.02.2016 19:59

Сегодня смержил бранч в мастер, т.е. от релиза отделяет документация :)

kobezzza 03.02.2016 20:14

Пример использования декораторов для интеграции библиотеки 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()
	Привет "Мир"!


->

Привет «Мир»!

kobezzza 04.02.2016 00:27

Выложил бету в npm. Все плагины были обновлены для использования с SS7.

http://codepen.io/kobezzza/pen/zrJNXx тут можно поиграться.

Vlasenko Fedor 04.02.2016 01:40

kobezzza,
В нем есть функционал хранения шаблона на клиенте?

kobezzza 04.02.2016 02:04

Цитата:

Сообщение от Poznakomlus (Сообщение 406303)
kobezzza,
В нем есть функционал хранения шаблона на клиенте?

SS - это язык транслируемый в JS, а где этот JS запускать, будь то сервер, клиент или еще где - это дело разработчика. Плагины к SS для удобства использования могут также сразу сгенерить результат работы этого JS.

Vlasenko Fedor 04.02.2016 02:21

SS - это язык???
Тогда приведи примеры где он явно показан в качестве транслируемого языка.
Цитата:

Сообщение от kobezzza
http://codepen.io/kobezzza/pen/zrJNXx

пример работы шаблонизатора
CoffeeScript, TypeScript, SS тогда на этом фоне не мешало бы сравнение и обзор

kobezzza 04.02.2016 02:24

Цитата:

CoffeeScript, TypeScript
Языки общего назначения.

SS - ОО язык описания шаблонов, т.е. их сравнивать нет смысла. SS - это как Stylus, только Stylus для CSS, а SS для XML/TXT.

Цитата:

Тогда приведи примеры где он явно показан в качестве транслируемого языка
https://github.com/SnakeskinTpl/std.ss

Vlasenko Fedor 04.02.2016 02:35

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

kobezzza 04.02.2016 02:39

Цитата:

понравился потестирую
Только дока пока для 6-й версии языка, а в 7-ке было много изменений. Дока появится в течении этого месяца.

kobezzza 04.02.2016 21:26

Сегодня SS7 успешно скомпилил мой проект :)

kobezzza 08.02.2016 18:01

Выпустил beta6. Помимо багфиксов содержит в себя 2 изменения:

1) Директива return теперь поддерживает запись блоком:

- return
  < .foo


2) Флаг renderAs теперь может быть задан при декларации шаблона

- template foo() @= renderAs 'template'


Нужно это для точечного импорта функции при использовании include as

Max Power 10.02.2016 18:53

> Если сравнивать объективно, то SS на много голов функциональнее того же Jade

И все же, конкретно, можно основные преимущества перед Jade озвучить (пытался искать по Jade в топике - не нашел)?

Особо интересует - решена ли эта проблема? http://javascript.ru/forum/node-js-i...h-dannykh.html


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