Цитата:
Цитата:
|
Начал работу над 7-й версией SS.
Из планируемых фич: 1) Поддержка потоков Collection; {forEach [realBigArray] => {thread: true} => el, i} ... {onChunk => data} ... {onIterationEnd => data} ... {onComplete => data} ... {/} 2) Улучшена поддержка Angular; 3) Поддержка React; 4) Поддержка сорспамов; 5) Поддержка фильтров для входных параметров шаблонов и подшаблонов: {template foo((param1|trim), (param2|round = 1.3|round))} 6) Поддержка async / await; {template-async foo()} {await getFile()} {/} 7) Поддержка задания атрибутов в директиве tag через массив; 8) Будет улучшен способ установки параметров по умолчанию: // param = param == null ? 1 : param {template foo(param = 1)} // param = param === undefined ? 1 : param {template foo2(?param = 1)} 9) Полный перевод доки на инглишь (русская версия разумеется останется) и общая доработка доки; 10) Статья на хабр :) Ломающие изменения: 1) Будет немного изменён синтаксис tag для работы XML неймспейсами: изменния будт очень незначительны и скорее всего ничего и не сломают в большинстве случаев. *** Скорее всего работа займёт несколько месяцев. |
Забыл сказать: если есть пожелания по фичами, то прошу не стесняться)
|
kobezzza,
Цитата:
Цитата:
Цитата:
|
Цитата:
// Параметр 1 будет установлен если foo == undefined или null (т.е. сейчас так и есть) foo = 1 // Параметр 1 будет установлен если foo == undefined ?foo = 1 Цитата:
И потом я решил таки полностью довести все свои разработки до масс, т.е. перевод док, статьи и т.д. А проект никуда не денется, подумаешь, закончу на пол года позже и хрен с ним :) |
Ещё добавлю фичу, на которую меня натолкнул Gozar: при добавлении фильтра ему можно будет указать свойство unsafe, которое будет отменять фильтр html по умолчанию
Snakeskin.Filter.n2br = function (str) { str.replace(/\r?\n|\r/, '<br />'); }; Snakeskin.Filter.n2br.unsafe = true; |
Ещё есть интересная идея постфильтры, т.е. фильтры, которые применятся к результату шаблона, например,
{template foo() @= filter [Typograf(), Speller()]} Т.е. к результату шаблона будут применятся сторонние либы для типографики, проверки опечаток и т.д. |
https://github.com/kobezzza/Snakeskin/issues/24
Завёл темку на Гх, где буду складировать фичи для SS 7. *** Буду рад помощи по работе с проектом: нужен человек, которой бы причесал имеющуюся доку в вики, т.е. я имею ввиду улучшение имеющих глав, возможно их реструктуризация и т.д. |
Цитата:
1. Подключение множества вложенных шаблонов. 2. Передача параметров при наследовании во вложенные {call myContent(param)}. Где надо ставить @, а где нет. Где надо передавать param, а где нет. Почему называть надо param, обязательно нужно ли называть param. 3. Отсутствие вызова шаблона, только код шаблона(это очень важно, когда начинаешь). 4. Примеры слишком простые, нужны ещё и сложные примеры(объявление двух шаблонов в одном, подключение и наследование в другой трех и т.п.) 5. Применение фильтров было не очевидно. {el.des|br|!html}особенно в каком-нибудь {forEach @city => el} Сейчас вроде все понятно и работает, но когда начинал было довольно тяжело разобраться в этих вопросах. Даже если они и описаны где-то, то я это не увидел, по крайней мере сразу или было не очевидно. Ещё раз спасибо за такую гибкую шаблонку. По скорости пока претензий нет. Попозже попробую под нагрузкой. :) |
Цитата:
[1, 2, 3].forEach(function (el, i, data) { ... }); [1, 2, 3].forEach(function (elem, key, self) { ... }); {forEach [1, 2, 3] => el, i, data} ... {/} {forEach [1, 2, 3] => elem, key, self} ... {/} {forEach [1, 2, 3] => elem, key, self, isFirst, isLast, length} ... {/} {forEach {a: 1, b: 2} => elem, key, self, i, isFirst, isLast, length} ... {/} Спс за наводки, я сейчас подумал, что нужно добавить часть "Быстрый старт", где описать такие вещи. Цитата:
|
Цитата:
|
Цитата:
{tag myCustomTag:inline}{/} -> <myCustomTag /> Но когда я вводил такой синтаксис, то не подумал про неймспесы в XML <xlink:a /> Поэтому нужно заменить синтаксис псевдоклассов, например на {tag myCustomTag::inline}{/} |
kobezzza,
Цитата:
|
kobezzza,
[маркетолог мод] ещё, как мне кажется, на страницу "Установка и варианты применения" было бы не плохо добавить инфу о поддержке Node.js 0.12 и IO.js. [/маркетолог мод] |
Цитата:
|
Угу, заломили цену ппц под 40к, но они жуки тупо считают количество букв и не выделяют код, поэтому нужно будет всю доку для них засунуть в один файл и вырезать весь код, чтобы не наебать У мя ща предновогодняя лень идёт, поэтому процесс ползёт медленно.
|
Цитата:
|
Zend,
он, наверное, про переводчиков, которым Кобеззза хотел заказать перевод на английский. Правда, я не совсем понял к чему он это написал. |
Цитата:
Цитата:
|
Цитата:
|
Слушай, а как ты справляешься с мыслями о том, что твой продукт может не взлететь? Вот сделаешь ты, напишешь пару постов на хабр, а среди разработчиков он не взыскает популярности...стараний вложено-то не мало.
Неужели просто для себя? Я не хочу никого обидеть. |
Цитата:
Я пишу свои библиотеки для себя и под реальные задачи, а ещё потому что я программист и люблю это делать, да и в конце концов, был ли я тем кем являюсь без всего этого? Думаю нет. Более того, это отличное портфолио. Что касается документации, перевода на английски и т.д. Тут тоже всё просто: 1) Доку пишу, потому что этого требует мой перфекционизм; 2) На английский перевожу, т.к. учу английский. |
kobezzza,
кстати, думаю, им можно прислать пуллреквест с бенчмарками SS. Подойдёт для начальной раскрутки) https://github.com/Deathspike/template-benchmark |
Цитата:
|
Цитата:
Хороший инструмент, простой в освоении :). Сделал и забыл, нужно доделать, вернулся 1 секунду повтыкал, доделал. Другое дело, если ты не понимаешь ещё зачем он тебе, это всего лишь значит, что либо ты не дорос, либо перед тобой нет задачи для решения этим инструментом. |
Цитата:
Кстати о развитии: со след недели у меняя снова появляется время на проект, т.к. ухожу на пол ставки на работе, поэтому выход SS7 думаю произойдёт в начале след месяца. А ещё я таки проникся WebPack (ууууу какой крутой инструмент :dance: ) поэтому в зоопарке плагинов к SS появится лоадер для WebPack. Также после выхода SS7 проект переедет в свою сосбтвенную группу на Github: https://github.com/SnakeskinTpl где также будут лежать все плагины (gulp, grunt, express, webpack и т.д.). |
Придумал ещё пару полезных фич для SS7:
Новый модификатор контекста: @: и директива env. По имени директивы уже можно догадаться, что данные вещи будут упрощать работу с переменными окружения: {env DEBUG = 'true'} или {void @:DEBUG = 'true'} Использование в других директивах: {if @:DEBUG == 'true'} ... {/} {switch @:NODE_ENV} {case 'dev'} ... {/} {case 'prod'} ... {/} {/} *** Также появится новый параметр компиляциии: engine, этот параметр будет задавать используемое окружение скомпиленного шаблона, например: default (он же nodejs, думаю для io пока нет смысла делать, ибо там все совпадает пока), nashorn (это встроенный в Java8 JS движок, чтобы использовать шаблоны из Java). В зависимости от этого параматра полученный код шаблона может немного отличаться, например, получение переменной окружения в node это process.env, а в nashorn как то иначе и т.д. |
Также есть идея ввести модификатор final для прототипов и блоков - это будет означать, что данный блок или прототип не может быть переопределен в дочернем шаблоне и следовательно его можно компилить по более быстрому алгоритму, что поможет увеличить скорость трансляции шаблонов.
{proto myTpl->foo() @final} ... {/} Но это пока только мысли вслух :) |
trikadin придумал новую систему code-reuse для SS, в добавление к наследованию и примесям, встречайте (барабанная дробь), враперы!
- template wrapper(data1, data2) < span style = color: red; {data1} < span style = color: blue; {data2} - template main() - wrap call wrapper Мой текст - and Мой текст 2 Думаю результат всем понятен :) |
Допишу ещё, а то из примера неочевидно, что враппером может быть кто угодно: темплейт, прототип, блок -- главное ключевое слово wrap не забыть :)
|
kobezzza,
а для SS обязательно нужен bower? Потому, что Цитата:
Цитата:
|
Цитата:
|
Разработка проекта переехала на https://github.com/SnakeskinTpl
|
|
Цитата:
![]() |
Давно не писал новостей и профакапил заявленые сроки, поэтому отпишусь: разработка SS7 идёт, хотя нехватка времени + лень (лето и велик мешают :)).
Уже сделано много и в июле (ориентировочно конец первой недели) думаю таки выйдет релиз. SS7 выходит просто потрясающий, это будет качественный шаг вперёд по сравнению с SS6, но при этом обратная совместимость по всем документированным фичам нарушена не будет, однако будут введены ряд новых синтаксических расширений, который позволят писать старые фичи с куда большим сахаром, чем это делается сейчас. Я бы назвал SS7 "переосмысливающем" релизом, т.к. в отличии от прошлых версий, где я просто добавлял фичи под требования своих проектов, то тут я впервые уделил время "спецификации", если так можно выразиться. В общем я стараюсь :) |
Цитата:
|
kobezzza, ты статью на харбе написал, ты вроде говорил что хотел, я профукал или еще нет?)
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 06:36. |