Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 07.09.2014, 16:10
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
A и Б - страницы рендерится с нуля? Насколько сложный в страницах DOM? В SPA может быть частичное изменение DOM, внутри одного раздела не обязательно рендирить страницу с нуля.
С нуля, т.к. абсолютно разные страницы. Частичные изменения в рамках страницы это частный случай.

Цитата:
Насколько сложный в страницах DOM?
Разный. Пока не ввёл многопоточный рендеринг фризы возникали часто.

Ясное дело, что мой пример очень специфичный, но он из реальной жизни.

Цитата:
Это ты про то, что лучше обработчик вешать на контейнер, а не на кучу вложенных элементов?
Не только, но и это тоже. Например события типа mousemove и т.д. лучше вешать по требованию и снимать после работы, например, зажали мышку -> навесили -> отпустили мышку -> сняли.
__________________
kobezzza
code monkey
Ответить с цитированием
  #12 (permalink)  
Старый 07.09.2014, 17:42
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от kobezzza
С нуля, т.к. абсолютно разные страницы. Частичные изменения в рамках страницы это частный случай.
Сообщение от kobezzza
фриз страницы на 200-300 мс, что недопустимо
Что-то я не догоняю. Это точно SPA? Я написал штук 10 разных SPA с совершенно различным назначением и только в одном из них приходилось рендерить (Частично!!!) больш`ую часть страницы и только там были заметны эти 200мс на которые можно было совершенно спокойно забивать болт, т.к. переходы между этими страницами редки и вряд ли могут быть недопустимыми. Очень похоже, что ты там веб-ОСь пилишь, а не SPA.

Сообщение от kobezzza
Например события типа mousemove и т.д. лучше вешать по требованию и снимать после работы, например, зажали мышку -> навесили -> отпустили мышку -> сняли.
Я думал, что это очевидно должно быть всем?!

Думаю я понял твое высказывание про кривые руки.

Подитожим: DOM медленный, если руки из жопы или если нужны большие вставки/удаления DOM постоянно.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #13 (permalink)  
Старый 07.09.2014, 18:14
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Что-то я не догоняю. Это точно SPA? Я написал штук 10 разных SPA с совершенно различным назначением и только в одном из них приходилось рендерить (Частично!!!) больш`ую часть страницы и только там были заметны эти 200мс на которые можно было совершенно спокойно забивать болт, т.к. переходы между этими страницами редки и вряд ли могут быть недопустимыми. Очень похоже, что ты там веб-ОСь пилишь, а не SPA.
SPA - SPA рознь. Ты просил пример из жизни - я привёл. Но нет, не веб-ось

Сам пример: форум, открыт тред, бесконечный скролл пролистан вниз на 5-6 страниц и юзер жмакает перейти в настройки профиля. Между этими страницами общего только хедер и футер (и то частично) + различные виджеты вне страницы, как "чат-окошко" личных сообщений и т.д.. - это разумеется рендерить заного нет смысла, но сами страница абсолютно разные и этот переход реально фризит. Таких примеров много, как и переходов, т.к. у меня реально большой сайт с кучей страниц и всё работает в рамках SPA.

Цитата:
Я думал, что это очевидно должно быть всем?!
Думаю я понял твое высказывание про кривые руки.
Ну, мы же это делаем не от хорошей жизни Я лично был бы рад, чтобы браузер сам хитрил с оптимизациями, а я мог писать как проще.

Цитата:
Подитожим: DOM медленный, если руки из жопы или если нужны большие вставки/удаления DOM постоянно.
В общем да. Хотя ещё можно добавить, если само дерево ОЧЕНЬ большое, то будет тормозить, хотя это редкий кейз и встречается опять таки в различных табличных процессорах (например, таблица 10е5 на 10e5 ячеек).

***

Возможно, когда выйдут новые поколения браузеров на всяких Servo, Blink 2 и т.д. то многие оптимизацию станут не нужны.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.09.2014 в 18:46.
Ответить с цитированием
  #14 (permalink)  
Старый 07.09.2014, 19:01
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Вот ещё немного про DOM: http://habrahabr.ru/post/235333/
Ответить с цитированием
  #15 (permalink)  
Старый 07.09.2014, 19:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Safort, единственный недостаток insertAdjacentHTML - он сволочь длинный. И параметры у него длинные.))
__________________
29375, 35
Ответить с цитированием
  #16 (permalink)  
Старый 07.09.2014, 22:39
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Safort
Вот ещё немного про DOM
Я перестал читать эту заметку после слов:
Сообщение от http://habrahabr.ru/post/235333/
кусок HTML-кода в виде строки, полученной через AJAX-запрос, обычно в таком случае мы помещаем этот код в родительский элемент через свойство innerHTML:
Ключевое слово тут обычно. Так вот обычно это было лет 5 назад, а сейчас это древний баян. innerHTML сносит все обработчики и подобным способом просто невозможно адекватно пользоваться.

Сообщение от Aetae
И параметры у него длинные.))
Ага, и называются странно. Не beforestart, а beforebegin
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #17 (permalink)  
Старый 07.09.2014, 22:49
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Мне вот интересно, какое максимальное количество обработчиков здешние гуру вешали в своих самых сложных веб-приложениях(и что это были за приложения такие)? Как это сказывалось на производительности?
Ответить с цитированием
  #18 (permalink)  
Старый 07.09.2014, 22:54
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Safort
какое максимальное количество обработчиков
По разному, я стараюсь не злоупотреблять. Сколько виджетов на странице, приблизительно столько же и обработчиков +- типы(click, dblclick, mouseEvenst ...). У меня в fj можно вешать и на data-item (дочерние элементы), но если их много 20 и более, то лучше все же повесить на родителя и отслеживать по target-у.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #19 (permalink)  
Старый 07.09.2014, 23:04
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Gozar
Ключевое слово тут обычно. Так вот обычно это было лет 5 назад, а сейчас это древний баян. innerHTML сносит все обработчики и подобным способом просто невозможно адекватно пользоваться.
Сообщение от Gozar
то лучше все же повесить на родителя и отслеживать по target-у.
ситуации разные бывают
если вешать на родителя, то чем тебе плох innerHTML?
говоря "древний баян", имеешь в виду другие способы стали намного быстрее?
Ответить с цитированием
  #20 (permalink)  
Старый 07.09.2014, 23:26
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от bes
ситуации разные бывают
Да можно отстрелить себе ногу, зажарить и съесть, вместо того, чтобы почистить и зажарить картошку. Но зачем?

Сообщение от bes
если вешать на родителя, то чем тебе плох innerHTML?
Сообщение от Gozar
innerHTML сносит все обработчики

Сообщение от bes
говоря "древний баян", имеешь в виду другие способы стали намного быстрее?
А ты значит считаешь, что нужно вместо добавления к родителю, вырезать из родителя все дочерние узлы, со всей их вложенностью и затем рендерить опять?

Может перестанешь глупости писать? Очевидно, что добавление к родителю быстрее, чем перерендеринг старых эл+навешивание на них заново событий, если это вообще возможно, и рендеринг опять вместе с новыми.

Да это баян, дикий, ДРЕВНИЙ баян! Раньше небыло выхода, но стрелять себе в ногу уже минииум 5 лет как не нужно.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 07.09.2014 в 23:28.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
новый элемент не добавляется в DOM kuchuluk Элементы интерфейса 5 30.05.2014 22:11
инициализация плагинов до вставки html-я в DOM FanAizu jQuery 3 19.01.2014 01:16
Получить список ВСЕХ элементов DOM Почемучкин Events/DOM/Window 7 16.04.2012 11:33
Новый элемент отсутствует в DOM модели StrSprut jQuery 4 19.09.2011 12:50
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26