bayrell / BayLang

BayLang compiler source code
https://bayrell.org/ru/docs/baylang
Apache License 2.0
4 stars 0 forks source link

Оптимизацией рендера. Ключ @watch #120

Closed ildar-ceo closed 10 months ago

ildar-ceo commented 1 year ago

Нужно что-то придумать, чтобы ускорить рендер. Варианты:

  1. Частичный переобход
  2. Скипать, если модель или какие-то части модели не изменены
  3. Делать точечный рендер тех VirtualDom, которые должны измениться
  4. События на основе комитов
ildar-ceo commented 1 year ago

107 Сделать модели изменяемыми

ildar-ceo commented 1 year ago

Предлагаю ввести атрибут watch, который позволяет рендер функции проверить, изменилась ли элемент модели или нет. И если не изменилась, то скопировать уже ранее созданный рендер. Это позволит уменьшить обход всего дерева.

<div class="item" @watch=["item", "name"] @watch=["item", "name2"]>
{{ model.item.name ~ model.item.name2 }}
</div>

или:

<div class="items" @watch=["items"]>
%for (int i=0; i<model.items.count(); i++)
{
  %set var item = model.items.get(i);
  <div class="item" @watch=["items", i]>
    {{ item.name }}
  </div>
}
</div>
ildar-ceo commented 10 months ago

Было решено использовать Vue.js