Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #81 (permalink)  
Старый 07.01.2014, 23:39
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

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

Последний раз редактировалось monolithed, 07.01.2014 в 23:44.
Ответить с цитированием
  #82 (permalink)  
Старый 07.01.2014, 23:42
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от monolithed Посмотреть сообщение
Я тебе понял, мне просто кажется ты не проник духом дата-биндинга
Проникся Именно поэтому я ввёл сахар {{}} (http://jsfiddle.net/NAPWB/7/), т.е. Snakeskin может сахарно генерить шаблон для либы, которая делает биндинг (у меня так и делает). Но в тоже время шаблоны у меня юзаются не только на клиенте, а также на сервере и т.д.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.01.2014 в 23:50.
Ответить с цитированием
  #83 (permalink)  
Старый 07.01.2014, 23:57
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

А в чем преимущества по сравнению с тем же RactiveJS, в котором есть все теже возможности шаблонизации (итерирование, условные операции, в.ч. для атрибутов {{ ? : }}, включение блоков, прекомпиляция)?

Последний раз редактировалось monolithed, 08.01.2014 в 00:00.
Ответить с цитированием
  #84 (permalink)  
Старый 08.01.2014, 00:20
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 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
code monkey

Последний раз редактировалось kobezzza, 08.01.2014 в 00:29.
Ответить с цитированием
  #85 (permalink)  
Старый 08.01.2014, 00:49
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от kobezzza Посмотреть сообщение
К тому же, на клиенте Snakeskin не существует, т.к. он отваливается на этапе сборки проекта и мы работаем уже с простыми JS функциями
почему? доступ к файлам шаблонов?
Ответить с цитированием
  #86 (permalink)  
Старый 08.01.2014, 00:55
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от melky Посмотреть сообщение
почему? доступ к файлам шаблонов?
Если в кратце:

{template foo.bar()}
    hello!
{/}


Скомпилируется в

foo.bar = function () {
    return 'hello!';
};


И мы подключим скомпилиный файл как простой script и будем юзать, Snakeskin уже не нужен.

ЗЫ: разумеется это упрощение
__________________
kobezzza
code monkey
Ответить с цитированием
  #87 (permalink)  
Старый 08.01.2014, 01:02
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 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.
Ответить с цитированием
  #88 (permalink)  
Старый 08.01.2014, 01:12
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

неплохо! наверное этот вопрос уже задавался, но .. а если мы получили с сервера неоткомпиленный шаблон?
Ответить с цитированием
  #89 (permalink)  
Старый 08.01.2014, 01:16
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от melky Посмотреть сообщение
неплохо! наверное этот вопрос уже задавался, но .. а если мы получили с сервера неоткомпиленный шаблон?
Откомпиль его на клиенте, скорость трансляции в Snakeskin очень высокая, но придётся дополнительно грузить транслятор, а это 11 дополнительных килобайт (под гзипом + минификация).
__________________
kobezzza
code monkey
Ответить с цитированием
  #90 (permalink)  
Старый 08.01.2014, 01:24
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от melky
наверное этот вопрос уже задавался, но .. а если мы получили с сервера неоткомпиленный шаблон?
Такие ошибки должны выявляться на этапе разработки и тестирования.

К примеру, у нас шаблоны на дев-серверах все компилирется в на клиенте, а на тестовых серверах, собираются в сборки.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
express-snakeskin - view через snakeskin для express melky Ваши сайты и скрипты 5 10.06.2014 11:35