Цитата:
|
kobezzza,
а чего он такой агрессивный? Но в любом случае уже годнота) А ты говорил с переводчиками? |
Цитата:
Цитата:
|
kobezzza,
захожу на https://github.com/kobezzza/Snakeskin и не вижу лого( Оно как бы есть, но его как бы нету :) Цитата:
|
Цитата:
Цитата:
|
Выпустил очередной патч, также на гитхабе красуется лого :)
|
kobezzza,
только обновился до 6.5.8, а ты уже 6.5.10 запушил) |
Цитата:
*** Ща пошла тенденция, что в основном баги находятся в Jade-Like парсере при обработке пробелов (tolerateWhitespace = false), а в директивах уже давно не находил багов. |
Выпустил v6.5.11
Помимо исправлений ошибок был переведён на английский файл README и HISTORY. В этом году в планах полный перевод доки (комментарии в исходном коде останутся на русском, т.к. мне так проще). |
kobezzza,
Цитата:
Цитата:
|
Цитата:
PS: кстати, проекту SS уже пошёл 3-й год! |
Чую версию 6.5.12 с самими крупными изменениями.
|
Цитата:
Да прост описание в Readme обновил и исправил парочку орфографических ошибок :) |
Выпустил обновление v6.5.13 - провёл некоторые оптимизации, что дало прирост скорости трансляции на 5-10%.
*** Не могу понять: я нигде не пиарю и не рассказываю об SS (ну кроме этого ресурса), но NPM показывает какуе то бешеную статистику, например, что за последний месяц было 4+к скачек, причём за последний день 600+. Кто эти люди или это какие то боты? :) |
kobezzza,
не знаю как сейчас, но раньше на npm устраивали ДДОС и оно несколько раз падало. Так что возможно да, это боты. Мб ещё из-за того, что ты на английском readme написал :D |
Цитата:
|
Выпустил SS 6.5.19.
Помимо багфиксов порефакторил код, теперь структура файлов выглядит гораздо понятнее https://github.com/kobezzza/Snakeskin/tree/master/lib (если конечно кто-то захочет залезть в кишки :) ) *** В версии 6.6 планирую добавить поддержку sourcemap. |
kobezzza,
Цитата:
|
Цитата:
Snakeskin.addDirective( 'if', { block: true, notEmpty: true, group: 'if' }, function (command) { this.startDir(); if (this.isReady()) { this.append(`if (${this.prepareOutput(command, true)}) {`); } }, function () { this.append('}'); } ); Все же просто :) |
kobezzza,
Цитата:
|
Я сейчас часто думаю, что надо было писать SS как язык, а не как препроцессор: т.е. реализовать полностью свой синтаксис (JS like), а не использовать JS, строить полное AST и разделить архитектуру на части:
1) Фронтенд: построение AST и работа с ним; 2) Бекэнд: трансляция результат в заданный язык. Такая архитектура была бы более гибкая, с точки зрения настройки трансляции в разные языки. Сейчас же SS работает как простой препроцессор на основе конечного автомата: т.е. в тексте ищутся директивы, они преобразуются в другие директивы и так до тех пор, пока все директивы не будут преобразованы. Такая модель проще, занимает меньше кода и работает быстрее, но менее гибкая. |
kobezzza,
как я понимаю, в будущем, ты планируешь его переписать, так? |
Цитата:
Сам ж понимаешь, что каждый прогер мечтает сделать свой ЯП :) Ну а вообще, SS в том виде, что он сейчас, написан вполне хорошо, мне даже почти нравится и вроде как (тьфу, тьфу, тьфу) уже давно не было серьёзных багов. Касаемо планов на этот год по SS: 1) Написать большую статью на хабр и перевсти её на инглишь; 2) Перевести доку на инглишь; 3) Добавить поддержку сорсмапов. |
kobezzza,
Цитата:
Цитата:
|
Цитата:
|
По заспросу в гугле
Цитата:
|
Цитата:
|
Выпустил юбилейный 100-й релиз-патч SS :)
PS: 13 января было ровно 2 года с первого коммита проекта :) |
//то чувство, когда узнаёшь новости ещё до оф. объявления)
Поздравляю) |
Цитата:
|
Цитата:
На пыхе я плевался html без шаблонок и хотелось бы на ноде тоже что-то очень шустрое. |
Цитата:
Логично, что к основному функционалу SS имеет из коробки всякие сахарные обёртки, чтобы например удобнее юзать из ноды, или чтобы результатом уже был не JS, а то, что этот JS возвращает (такое используется в статичных сайтах). Вообще по SS есть хорошая дока, где на все твои вопросы есть ответы: https://github.com/kobezzza/Snakeskin/wiki https://github.com/kobezzza/Snakeskin/wiki/faq А если что там нет, то можно спросить у меня как на Гитхабе, так и тут. *** Примеры использования в ноде: 1) На этапе сборки проекта / разработки транслируем и затем подключаем уже полученный JS. Статическую трансляцию можно сделать множеством способов: есть плагины для grunt и gulp, можно использовать CLI API (консолька, которая также поддерживает файл вотчинг), можно использовать файл вотчеры в ИДЕ и т.д. Когда у нас есть скомпиленый шаблон, то var tpl = require('./myTpl.js'); 2) Использование специального АПИ для Ноды https://github.com/kobezzza/Snakeskin/wiki/compileFile https://github.com/kobezzza/Snakeskin/wiki/execFile https://github.com/kobezzza/Snakeskin/wiki/exec 3) Работать на прямую с транслятором, но это не очень удобно в ноде :) https://github.com/kobezzza/Snakeskin/wiki/compile *** По поводу скорости: тут нужно дать определение, т.к. есть 2 показателя скорости: 1) Скорость трансляции - это сколько времени займёт процесс преобразования SS в JS. Он делается как правило один раз, либо на этапе сборки, либо в рантайме с последующим кешированием (его можно отключить, если нужно), поэтому данный показатель никак не влияет на скорость работы приложения. Трансляция делается ровно столько, чтобы о ней не думать (в моём случае, это где то 20% от общего времени сборки проекта, т.е. ерунда). 2) Скорость исполнения полученного JS: в основном она зависит от содержимого шаблона, т.е. то что напишет пользователь, а SS тут уже не причём, НО SS имеет различные плюшки, которые помогают генерить более быстрый JS, например, есть поддержка оптимизации хвостовых рекурсий. Вообще тут SS выступает также, как например C++, т.е. он имеет конструкции и режимы оптимизации + ручное управление содержимом, которые позволяют самому разработчику решать что ему важнее скорость трансляции или скорость исполнения. Например, для подшаблонов в SS есть 2 директивы proto и block, которые за исключением некоторых особенностей почти идентичны, но proto увеличивает время трансляции, чтобы уменьшить время выполнения, а block наоборот. Вот такие вот дела. *** Если сравнивать объективно, то SS на много голов функциональнее того же Jade, я бы сказал, что это как сравнивать Stylus и LESS. С точки зрения зрелости, то сейчас есть лишь одна фича, которую я планирую добавить - это сорсмапы, а в остальном проект завершён и сейчас я занимаюсь исключительно докой и выпуском патчей. PS: забыл сказать, что сейчас шаблоны SS возвращают либо строки, либо DocumentFragment, в зависимости от заданных настроек, которые можно также делать в самом файле шаблонов. /// Вернёт строку - template foo(a, b) < div.foo {a + b} /// Вернёт DocumentFragment - template bar(a, b) @= renderMode 'dom' < div.foo {a + b} Подобно Stylus, SS поддерживает 2 вида синтаксиса, поэтому примеры можно переписать так: /// Вернёт строку {template foo(a, b)} <div class="foo">{a + b}</div> {/template} /// Вернёт DocumentFragment {template bar(a, b) @= renderMode 'dom'} <div class="foo">{a + b}</div> {/template} PSPS: Про подсветку синтаксиса и автокомплит: в WebStorm и Notepad++ это делается очень просто: заходим в настройки, добавляем новый язык, ассоциируем его с расширением и добавляем список ключевых слов и усё :) Про другие редакторы я хз, т.к. не использую их. |
Скорость трансляции меня никоим местом не колышет. Если я правильно понял, то трансляция делается один раз при старте эхо-сервера, а затем в получ. функцию мы передаем параметры, в зависимости от которых ф-ия плюется разным html?
Цитата:
Сам html у меня простецкий, влезает на любой экран целиком, меняется в основном текст, которого может быть довольно много. Я хочу понять, сколько будет жрать шаблонка памяти, проца при 1 посетителе в 1 сек, при 10 и при 100? На клиенте мне было без разницы, а вот сервер не резиновый. Извиняюсь, если невнятно объясняю, т.к. делаю это на ноде впервые, был опыт с php и он жрал будь здоров, из-за чего пришлось бросить шаблонки и плеваться html вперемешку с php (зато быстро). |
Цитата:
Цитата:
- template foo() Hello World! Грубо говоря превратится в function foo() { return 'Hello World!'; } Конечно там будет экранирование, защита от XSS где нужно и т.д., но это реально ерунда. А если ты, например, вставишь очень толстый цикл в шаблон, то он естественно будет долго выполнятся, - template foo() - for var i = 1e9; i--; Hello World! Цитата:
Также SS умеет отдавать свой результат чанками, с помощью генераторов: - template *foo() - for var i = 1e9, j = 0; j++, i--; - if j === 1e3 ? j = 0 - yield result ... |
kobezzza,
В чём преимущества перед Jade/TwigJS/EJS? |
Немогу понять, почему модули в NodeJs подключаются по относительному пути:
var Model = require('../model/echo'); а шаблон snakeskin от корня: header = snakeskin.compileFile('./server/app/tpl/header.ss'); ? |
Я что-то не понимаю, где file watcher: node_modules/bin/snakeskin из этого видео?:
http://www.youtube.com/watch?v=TspTov7AWog |
Цитата:
Во первых непонравились углы, нафиг они нужны я не понял. Во вторых я не смог написать в шаблоне: doctype html скомпилилось в <doctype html="html">что собственно неверно. !doctype htmlтак тоже не проканало, дальше играть не стал. А ещё я не нашёл File Watcher /bin/snakeskin. Можно конечно через грунт, но у меня в грунт висит сборка в браузер и вешать еще один грунт я не хочу. В принципе можно забить болт и собирать при запуске сервера, как делаю сейчас, но несовсем понятна причина отсутствия вотчера... |
Цитата:
Вообще логика такая: директивы в Jade-Like обозначаются с помощью - и # (расширенный вариант), также для тех директив, которые поодерживают шорткаты, то можно использовать их, например, < div или полный вариант - tag div Всё остальное трактуется как простой текст. Цитата:
https://github.com/kobezzza/Snakeskin/wiki/doctype Например, - doctype svg 1.1 full <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> Цитата:
https://github.com/kobezzza/Snakeski...0%BE%D0%B5-API Пример, скомпилим все шаблоны в папке (сохранять будет туда же) и повесим файл вотчер: snakeskin ./tpls/ -o ./tpls --watch Также можно использовать grunt-watch или gulp-watch для вотчинга. |
Цитата:
Можно настроить FileWatcher в WS (на видео). Можно используя CLI --watch. Можно через gulp-watch, grunt-watch, make... Цитата:
|
Часовой пояс GMT +3, время: 12:47. |