Цитата:
Цитата:
{template Widget.prototype.tpl()}
hello {this|bind 'name'}
{end}
Widget.prototype.foo = function () {
this.name = 'Вася' // шаблон сам сделает обновление
};
Snakeskin.Filters.bind = function () {
// Тут для this.что-то создаётся set и get методы
};
|
Вставка текста и парсинг его браузером быстрее, чем создание DOM элементов
Да нифига подобного. Предположим что есть таблица из 1000 строк, в модели добавилась только одна строка. Шаблонизатор заточенный под клиент(reactive к примеру) добавит только одну строку, шаблонизатор кобеззы выплюнет 1001. Что касается разовой генерации html то вот замеры скорости. innerHtml разве что в IE предпочтителен. |
Цитата:
Но вообще твой позыв я услышал, я добавлю механизм из коробки, но он будет опциональным. ЗЫ: Ребят, отдельная просьба, если вы юзаете мои разработки, то не молчите, т.к. иначе я веду разработку только с оглядкой на свои требования. Вот например огромное спасибо melky за интеграцию Snakeskin с Express: сейчас она выглядит неуклюже, но мы обсудили пути улучшения и уже совсем скоро этих проблем не будет. |
Цитата:
Цитата:
Цитата:
|
будет зааппенден к остальным
Интересно где ты будешь искать эти остальные :) И как удаление gпары строк будешь отрабатывать? что шаблонизатор выплюнет в этом случае ? |
Цитата:
{template Widget.prototype.tplRow(params)}
...
{/}
{template Widget.prototype.tpl(list)}
<div class="foo">
{forEach list => el}
{call this.tplRow(el)}
{/}
</div>
{/}
Widget.prototype.appendRow = function (params) {
this.find('.foo').append(this.tplRow(params));
}
|
Ты же блин в конец просто вставил, об этом речи не идет
Задача звучала примерно так между 13м и14м появило 10 новых элементов, а начиная с 112, 20 элементов исчезли. Неужели не ясно в чем заключается ограничение шаблонизатора :( |
Цитата:
атрибуты, классы, делегирование, т.е. проблемы тут нет, просто другой подход к организации кода. Цитата:
Посмотри тот же нокаут, где все биндинги описываются как дата-атрибуты, а в качестве шаблонки юзается простой jQ template, который тоже плюётся текстом и не про какие биндинги не знает :) Тут уже какой подход больше по душе. |
Цитата:
Цитата:
Но по итогу на reactive решение обговоренной задачи уместится в несколько строчек.
{{#superheroes:num}}
<tr>
<td>{{ num + 1 }}</td>
<td><a href='{{info}}'>{{name}}</a></td>
</tr>
{{/superheroes}}
И здесь уже есть все, и удаление строк и добавление в любое место произвольного количества, и любая комбинация из удалений, изменения, и добавлений. А на snakeskin нужен бубен, цикл там есть но он абсолютно бесполезен для поставленной задачи. Собственно я уже забыл о чем спорю и зачем )))) |
Но суть твоей мысли я понял, понашмякать виджетов использующих низкоуровневый шаблонизатор snakeskin а дальше собирать интерфейс из виджетов реализовав биндинг силами виджета. Здесь все нормально я делаю все тоже самое.
При использовании snakeskin все вопросы по быстродействию переносятся с шаблонизатора на разработчика виджета. Последний момент и является камнем приткновения так как я считаю что производительность это забота шаблонизатора (по образцу react и reactive) а не разработчика виджета. |
| Часовой пояс GMT +3, время: 09:30. |