Як правильніше парсувати результати ajax запиту

Є сайт, у лістингу якого за допомогою ajax-запиту підвантажуються дані (спочатку сторінка генерується не через js, а на бекенді генерується початковий вигляд сторінки). Дані можуть бути різних типів із різними умовами відображення.

Власне, питання у тому, де має формуватися відображення даних. На вибір 2 варіанти: 1) Парсі відображення на бекенді, передавати у вигляді html-тексту, перепризначати події на нові дані. 2) Використовувати шаблонизатор на js, який працюватиме з даними json і братиме на себе всю логіку відображення.

У першого підходу я бачу такі тонкощі: Вся генерація відображення розташована в одному місці, що значно спрощує підтримку сайту надалі. - Довший час підвантаження даних (на з'єднанні 50кб/с різниця між першим і другим підходом 7 і 0,8 с, на більш високих з'єднаннях майже не відчувається). - Якщо html-текст, що підвантажується, обросте подіями javascript, його буде складніше підтримувати на фронті.

Другий підхід показує наступне: + Швидке підвантаження даних. + Буде легше підтримувати події на об'єктах, що підвантажуються. - Ми отримуємо 2 шаблонизатори, написані різними мовами (один - для початкового підвантаження стрічок і об'єктів (бекенд), другий - написаний на js для генерації логіки відображення одержуваних ajax-даних в json форматі. - Складний парсинг шаблонів js може гальмувати на малопотужних пристроях.

Хочу дізнатися про варіанти вирішення цього питання, і як зазвичай роблять у цих випадках? У нас усі думки поділилися на 2 сторони: фронтендери за другий варіант, а бекендери за перший. Може, є якесь рішення, яким будуть задоволені всі сторони?

я роблю так. все складається з блоків, декожен блок це якесь хтмл, до якого додається свій джаваскрипт, який цей блок особисто навішує всякі обробники. є два випадки: завантаження сторінки цілком (тобто всіх блоків з усіма своїми джаваскриптами) та перезавантаження окремих блоків у фоновому режимі (аджакс так званим). у першому випадку власне завантажується сторінка і по готовності відпрацьовують усі скрипти, які додаються до блоків, з яких вона складається. у другому блок завантажується на сторінку (вставляється в потрібне місце, реплейситься, апендиться чи ще як) і знову ж таки відпрацьовують його скрипти (саме його а не все). якщо в цих скриптах є біндінги подій, то їх спочатку потрібно відбіндити, тому що блок може перезавантажуватися скільки завгодно раз і з кожним разом події будуть навішуватися повторно і натискання на кнопку надсилатиме не один запит а стільки скільки разів був перезавантажений блок. ніколи не було довіри до всяких .on() .live() тощо. простіше і надійніше замінити шматок коду на сторінці і заробити все, що його стосується.

всі ці кілобайти та мілісекунди повна нісенітниця, всі суперечки на цю тему це відстоювання своїх знань певних технологій. як на мене якщо програма на пхп то вся логіка в пхп і повинна відбуватися а джс тільки обслуговувати інтерфейс і не більше