Backbone Performance - Коллекция с представлением для каждой модели или только одно представление для всей коллекции

Если у вас есть коллекция с 50 моделями, кажется, что у меня есть 2 основных варианта для рендеринга списка, отображающего 50 моделей:

- Вариант 1: создайте отдельное «представление элементов» для каждой модели и добавьте эти представления к основному «представлению списка». Это обеспечит прямую связь между каждым "представлением элементов" и каждой моделью, будет практичным и соответствовать философии Backbone.

- Вариант 2: иметь только одно «представление списка», отображающее список с «атрибутами данных», помогающими получить соответствующую модель, когда событие происходит в данном элементе списка.

Я понимаю, что вариант 1 использует Backbone гораздо лучше, однако меня беспокоит количество прослушивателей событий с этим вариантом. Если у меня есть 4 события, которые я должен прослушивать для каждого элемента, это будет означать, что у меня будет 4x50 = 200 слушателей событий в моем списке ... против 4 (делегированных) слушателей событий с вариантом 2.

Учитывая, что я хочу использовать Backbone для приложения Cordova, какой вариант будет наиболее подходящим?


person jheissat    schedule 29.04.2015    source источник
comment
Запустите несколько тестов и протестируйте его.   -  person Michael.Lumley    schedule 29.04.2015


Ответы (1)


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

Несмотря на это - я бы использовал представления для каждого элемента только тогда, когда вам нужна эта дополнительная функциональность, такая как рендеринг и обработка формы редактирования, или когда отдельные элементы, вероятно, будут изменены, так что их нужно часто перерисовывать. Если это не так, используйте единый список и позвольте ему обрабатывать события.

person Exinferis    schedule 29.04.2015
comment
Спасибо, Exinferis. Я постараюсь реализовать этот смешанный подход. - person jheissat; 29.04.2015