| 
 | 
| 
 
Архитектурный вопрос 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Есть страница с табличными данными, которые отдает сервер. Строк в таблице много, поэтому к таблице добавлена пагинация. Вариант 1: Сервер отдает пустую таблицу (с пустым tbody) и JSON со всеми данными. Клиентский JS-скрипт заполняет таблицу (добавляет строки в tbody, используя данные из JSON). При смене страницы скрипт очищает tbody и заполняет таблицу заново (используя фрагмент данных, соответствующих выбранной странице). Вариант 2: Сервер отдает заполненную таблицу со всеми данными. Клиентский JS-скрипт считывает данные из таблицы (в массив), затем очищает страницу и заполняет ее заново фрагментом, соответствующим выбранной странице. Мне вариант 2 кажется более интересным. Таблица у меня стилизована через CSS (то есть в HTML-коде только базовая разметка таблицы, без стилей и классов), поэтому оверхед по сравнению с JSON не такой уж и большой. Зато этот вариант будет работать даже в том случае, если на клиентской стороне JS выключен. Ну и менять шаблон страницы будет проще, только в одном месте. Однако чаще используется вариант 1. Потому что он проще? Или я какие-то недостатки варианта 2 упускаю? P.S. Разумеется речь не про таблицы огромного размера (типа КЛАДР), а про таблицы поменьше, где пагинация используется из соображений удобства и внешнего вида, а не вынуждено. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.03.2020, 11:05 | 
  
  
  
   | 
||
| 
 
Архитектурный вопрос 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Alibek B. если на клиентской стороне JS выключен. Alibek B. Сервер отдает заполненную таблицу со всеми данными. Alibek B. Клиентский JS-скрипт заполняет таблицу (добавляет строки в tbody, используя данные из JSON). и ещё - для сервера проще отдать данные частями (извлечь из базы) чем одним огромным массивом ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.03.2020, 11:43 | 
  
  
  
   | 
||
| 
 
Архитектурный вопрос 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Alibek B., ..есть же уже куча JS-фреймворков, или даже просто библиотек, типа knockout.js, которые всё это делают на клиенте через observable arrays или аналоги ... но велосипед поизобретать - тоже полезное дело ... :) .. для общего развития ... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.03.2020, 12:10 | 
  
  
  
   | 
||
| 
 
Архитектурный вопрос 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Мне быстрее будет сделать свой велосипед, чем разбираться с крупным фреймворком. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.03.2020, 12:44 | 
  
  
  
   | 
||
| 
 
Архитектурный вопрос 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Alibek B. Потому что он проще? Или я какие-то недостатки варианта 2 упускаю? DOM тормозной я хз сколько ты будешь вычитывать большую таблицу. Ну и если у тебя будет таблица со всеми данными, можно встать раком. Вариант 1 самый быстрый в том плане, что ничего не надо передавать, данные нужны, скорее все, чем часть и нет необходимости защищаться от парсинга. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.03.2020, 12:52 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?desktop=1&fid=22&tid=1443500]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    53ms | 
get topic data:  | 
    13ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    47ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 225ms | 
| total: | 373ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.