Гость
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Архитектурный вопрос / 5 сообщений из 5, страница 1 из 1
17.03.2020, 11:05
    #39938141
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос
Есть страница с табличными данными, которые отдает сервер.
Строк в таблице много, поэтому к таблице добавлена пагинация.

Вариант 1:
Сервер отдает пустую таблицу (с пустым tbody) и JSON со всеми данными.
Клиентский JS-скрипт заполняет таблицу (добавляет строки в tbody, используя данные из JSON).
При смене страницы скрипт очищает tbody и заполняет таблицу заново (используя фрагмент данных, соответствующих выбранной странице).

Вариант 2:
Сервер отдает заполненную таблицу со всеми данными.
Клиентский JS-скрипт считывает данные из таблицы (в массив), затем очищает страницу и заполняет ее заново фрагментом, соответствующим выбранной странице.

Мне вариант 2 кажется более интересным.
Таблица у меня стилизована через CSS (то есть в HTML-коде только базовая разметка таблицы, без стилей и классов), поэтому оверхед по сравнению с JSON не такой уж и большой. Зато этот вариант будет работать даже в том случае, если на клиентской стороне JS выключен. Ну и менять шаблон страницы будет проще, только в одном месте.

Однако чаще используется вариант 1.
Потому что он проще? Или я какие-то недостатки варианта 2 упускаю?


P.S. Разумеется речь не про таблицы огромного размера (типа КЛАДР), а про таблицы поменьше, где пагинация используется из соображений удобства и внешнего вида, а не вынуждено.
...
Рейтинг: 0 / 0
17.03.2020, 11:43
    #39938157
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос
Alibek B.
если на клиентской стороне JS выключен.
это что-то из ряда вон... и рассчитывать на такое - только головняки огребать.
Alibek B.
Сервер отдает заполненную таблицу со всеми данными.
тоже не есть хорошее решение - во-первых - куча передаваемых данных за раз - время на открытие страницы. во-вторых - в некоторых случаях это не позволяет секретность не стоит отдавать весь набор данных, даже если он и доступен данному пользователю по частям.
Alibek B.
Клиентский JS-скрипт заполняет таблицу (добавляет строки в tbody, используя данные из JSON).
это лишняя работа для клиента. есть вариант проще - сформировать на сервере уже готовое содержание для тега tbody - готовую html строку. для сервера равнозначно по времени и затратам cpu что формировать json или html строку - и то и другое строка. для клиента - огромная разница - либо вставка одной командой .innerHTML , или работа кучи кода js.
и ещё - для сервера проще отдать данные частями (извлечь из базы) чем одним огромным массивом
...
Рейтинг: 0 / 0
17.03.2020, 12:10
    #39938172
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос
Alibek B.,

..есть же уже куча JS-фреймворков, или даже просто библиотек, типа knockout.js, которые всё это делают на клиенте через observable arrays или аналоги ... но велосипед поизобретать - тоже полезное дело ... :) .. для общего развития ...
...
Рейтинг: 0 / 0
17.03.2020, 12:44
    #39938200
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос
Мне быстрее будет сделать свой велосипед, чем разбираться с крупным фреймворком.
...
Рейтинг: 0 / 0
17.03.2020, 12:52
    #39938207
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Архитектурный вопрос
Alibek B.
Потому что он проще? Или я какие-то недостатки варианта 2 упускаю?

DOM тормозной я хз сколько ты будешь вычитывать большую таблицу. Ну и если у тебя будет таблица со всеми данными, можно встать раком. Вариант 1 самый быстрый в том плане, что ничего не надо передавать, данные нужны, скорее все, чем часть и нет необходимости защищаться от парсинга.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Архитектурный вопрос / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]