07.01.2014, 23:39
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от kobezzza
|
Ещё раз: дата-биндинг - это задача отдельный либы, которая использует шаблонизатор.
|
Я тебя понял, мне просто кажется ты не проникся духом дата-биндинга
Последний раз редактировалось monolithed, 07.01.2014 в 23:44.
|
|
07.01.2014, 23:42
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от monolithed
|
Я тебе понял, мне просто кажется ты не проник духом дата-биндинга
|
Проникся Именно поэтому я ввёл сахар {{}} ( http://jsfiddle.net/NAPWB/7/), т.е. Snakeskin может сахарно генерить шаблон для либы, которая делает биндинг (у меня так и делает). Но в тоже время шаблоны у меня юзаются не только на клиенте, а также на сервере и т.д.
Последний раз редактировалось kobezzza, 07.01.2014 в 23:50.
|
|
07.01.2014, 23:57
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
А в чем преимущества по сравнению с тем же RactiveJS, в котором есть все теже возможности шаблонизации (итерирование, условные операции, в.ч. для атрибутов {{ ? : }}, включение блоков, прекомпиляция)?
Последний раз редактировалось monolithed, 08.01.2014 в 00:00.
|
|
08.01.2014, 00:20
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от monolithed
|
А в чем преимущества по сравнению с тем же RactiveJS, в котором есть все теже возможности шаблонизации (итерирование, условные операции, в.ч. для атрибутов {{ ? : }}, включение блоков, прекомпиляция)?
|
В наследовании, я бы и не начал писать Snakeskin, если бы например в Closure Templates был нужный функционал для наследования. Все остальные директивы просто являются уже обязательным джентельменским набором. В большинстве шаблонизаторов оно либо отсутствует в принципе (привет композиция из кучи подшаблонов), либо выполнено на детсадовском уровне (Dust, Handlebars и т.д.). Нужную мне гибкость давали только XSLT-основанные шаблоны, но меня тошнит от XSLT Поэтому я сделал по сути свою версию Google Closure Templates, который мне очень нравился, только в отличии от него Snakeskin работает примерно в 1000 раз быстрее (Google Closure Templates реально очень медленно работает), написан на JS, а не Java и реализует крайне мощный механизм наследования. Более того, Snakeskin писался и пишется под один конкретный проект. Ни одна из добавленных фич не была выдумана "сферически", а добавлена исходя из нужд проекта.
Сообщение от monolithed
|
А в чем преимущества по сравнению с тем же RactiveJS, в котором есть все теже возможности шаблонизации (итерирование, условные операции, в.ч. для атрибутов {{ ? : }}, включение блоков, прекомпиляция)?
|
Snakeskin создан, чтобы использоваться не только в окошке браузера, а в любом окружении (это тоже были позаимстовано из Closure Templates). Я использую на сервере, также для генерации доки по jsDoc, для node-webkit приложений. Также Snakeskin дружит с Java.
К тому же, на клиенте Snakeskin не существует, т.к. он отваливается на этапе сборки проекта и мы работаем уже с простыми JS функциями, а для data-binding шаблонизатор нужен элементарный, но никак не 4.5к строк кода, которые в Snakeskin
Последний раз редактировалось kobezzza, 08.01.2014 в 00:29.
|
|
08.01.2014, 00:49
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от kobezzza
|
К тому же, на клиенте Snakeskin не существует, т.к. он отваливается на этапе сборки проекта и мы работаем уже с простыми JS функциями
|
почему? доступ к файлам шаблонов?
|
|
08.01.2014, 00:55
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от melky
|
почему? доступ к файлам шаблонов?
|
Если в кратце:
{template foo.bar()}
hello!
{/}
Скомпилируется в
foo.bar = function () {
return 'hello!';
};
И мы подключим скомпилиный файл как простой script и будем юзать, Snakeskin уже не нужен.
ЗЫ: разумеется это упрощение
|
|
08.01.2014, 01:02
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от melky
|
почему?
|
Предварительная компиляция существенно быстрей, хотя и имеет ряд недостатков:
- время сборки и поддержка этой архитектуры (на этапе разработки желательно иметь проксю)
- объем передаваемых данных на клиент минимум на 30-40% больше (есть темплейтеры где эта цифра больше 1000%)
Сообщение от melky
|
доступ к файлам шаблонов?
|
Грубо говоря:
{template foo(data)}
{forEach data => value, index}
<p>{value}</p>
{end}
{/}
Будет транслировано в:
var foo = function (data) {
var html = '';
data.forEach(function (value, index) {
html += '<p>' + value + '</p>';
});
return html;
};
Последний раз редактировалось monolithed, 08.01.2014 в 01:08.
|
|
08.01.2014, 01:12
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
неплохо! наверное этот вопрос уже задавался, но .. а если мы получили с сервера неоткомпиленный шаблон?
|
|
08.01.2014, 01:16
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от melky
|
неплохо! наверное этот вопрос уже задавался, но .. а если мы получили с сервера неоткомпиленный шаблон?
|
Откомпиль его на клиенте, скорость трансляции в Snakeskin очень высокая, но придётся дополнительно грузить транслятор, а это 11 дополнительных килобайт (под гзипом + минификация).
|
|
08.01.2014, 01:24
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от melky
|
наверное этот вопрос уже задавался, но .. а если мы получили с сервера неоткомпиленный шаблон?
|
Такие ошибки должны выявляться на этапе разработки и тестирования.
К примеру, у нас шаблоны на дев-серверах все компилирется в на клиенте, а на тестовых серверах, собираются в сборки.
|
|
|
|