07.09.2014, 16:10
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
A и Б - страницы рендерится с нуля? Насколько сложный в страницах DOM? В SPA может быть частичное изменение DOM, внутри одного раздела не обязательно рендирить страницу с нуля.
|
С нуля, т.к. абсолютно разные страницы. Частичные изменения в рамках страницы это частный случай.
Цитата:
|
Насколько сложный в страницах DOM?
|
Разный. Пока не ввёл многопоточный рендеринг фризы возникали часто.
Ясное дело, что мой пример очень специфичный, но он из реальной жизни.
Цитата:
|
Это ты про то, что лучше обработчик вешать на контейнер, а не на кучу вложенных элементов?
|
Не только, но и это тоже. Например события типа mousemove и т.д. лучше вешать по требованию и снимать после работы, например, зажали мышку -> навесили -> отпустили мышку -> сняли.
|
|
07.09.2014, 17:42
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от kobezzza
|
С нуля, т.к. абсолютно разные страницы. Частичные изменения в рамках страницы это частный случай.
|
Сообщение от kobezzza
|
фриз страницы на 200-300 мс, что недопустимо
|
Что-то я не догоняю. Это точно SPA? Я написал штук 10 разных SPA с совершенно различным назначением и только в одном из них приходилось рендерить (Частично!!!) больш`ую часть страницы и только там были заметны эти 200мс на которые можно было совершенно спокойно забивать болт, т.к. переходы между этими страницами редки и вряд ли могут быть недопустимыми. Очень похоже, что ты там веб-ОСь пилишь, а не SPA.
Сообщение от kobezzza
|
Например события типа mousemove и т.д. лучше вешать по требованию и снимать после работы, например, зажали мышку -> навесили -> отпустили мышку -> сняли.
|
Я думал, что это очевидно должно быть всем?!
Думаю я понял твое высказывание про кривые руки.
Подитожим: DOM медленный, если руки из жопы или если нужны большие вставки/удаления DOM постоянно.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
07.09.2014, 18:14
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
Что-то я не догоняю. Это точно SPA? Я написал штук 10 разных SPA с совершенно различным назначением и только в одном из них приходилось рендерить (Частично!!!) больш`ую часть страницы и только там были заметны эти 200мс на которые можно было совершенно спокойно забивать болт, т.к. переходы между этими страницами редки и вряд ли могут быть недопустимыми. Очень похоже, что ты там веб-ОСь пилишь, а не SPA.
|
SPA - SPA рознь. Ты просил пример из жизни - я привёл. Но нет, не веб-ось
Сам пример: форум, открыт тред, бесконечный скролл пролистан вниз на 5-6 страниц и юзер жмакает перейти в настройки профиля. Между этими страницами общего только хедер и футер (и то частично) + различные виджеты вне страницы, как "чат-окошко" личных сообщений и т.д.. - это разумеется рендерить заного нет смысла, но сами страница абсолютно разные и этот переход реально фризит. Таких примеров много, как и переходов, т.к. у меня реально большой сайт с кучей страниц и всё работает в рамках SPA.
Цитата:
|
Я думал, что это очевидно должно быть всем?!
Думаю я понял твое высказывание про кривые руки.
|
Ну, мы же это делаем не от хорошей жизни Я лично был бы рад, чтобы браузер сам хитрил с оптимизациями, а я мог писать как проще.
Цитата:
|
Подитожим: DOM медленный, если руки из жопы или если нужны большие вставки/удаления DOM постоянно.
|
В общем да. Хотя ещё можно добавить, если само дерево ОЧЕНЬ большое, то будет тормозить, хотя это редкий кейз и встречается опять таки в различных табличных процессорах (например, таблица 10е5 на 10e5 ячеек).
***
Возможно, когда выйдут новые поколения браузеров на всяких Servo, Blink 2 и т.д. то многие оптимизацию станут не нужны.
Последний раз редактировалось kobezzza, 07.09.2014 в 18:46.
|
|
07.09.2014, 19:01
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
|
|
07.09.2014, 19:04
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
Safort, единственный недостаток insertAdjacentHTML - он сволочь длинный. И параметры у него длинные.))
__________________
29375, 35
|
|
07.09.2014, 22:39
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от Safort
|
Вот ещё немного про DOM
|
Я перестал читать эту заметку после слов:
Сообщение от http://habrahabr.ru/post/235333/
|
кусок HTML-кода в виде строки, полученной через AJAX-запрос, обычно в таком случае мы помещаем этот код в родительский элемент через свойство innerHTML:
|
Ключевое слово тут обычно. Так вот обычно это было лет 5 назад, а сейчас это древний баян. innerHTML сносит все обработчики и подобным способом просто невозможно адекватно пользоваться.
Сообщение от Aetae
|
И параметры у него длинные.))
|
Ага, и называются странно. Не beforestart, а beforebegin
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
07.09.2014, 22:49
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
Мне вот интересно, какое максимальное количество обработчиков здешние гуру вешали в своих самых сложных веб-приложениях(и что это были за приложения такие)? Как это сказывалось на производительности?
|
|
07.09.2014, 22:54
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от Safort
|
какое максимальное количество обработчиков
|
По разному, я стараюсь не злоупотреблять. Сколько виджетов на странице, приблизительно столько же и обработчиков +- типы(click, dblclick, mouseEvenst ...). У меня в fj можно вешать и на data-item (дочерние элементы), но если их много 20 и более, то лучше все же повесить на родителя и отслеживать по target-у.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
07.09.2014, 23:04
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от Gozar
|
Ключевое слово тут обычно. Так вот обычно это было лет 5 назад, а сейчас это древний баян. innerHTML сносит все обработчики и подобным способом просто невозможно адекватно пользоваться.
|
Сообщение от Gozar
|
то лучше все же повесить на родителя и отслеживать по target-у.
|
ситуации разные бывают
если вешать на родителя, то чем тебе плох innerHTML?
говоря "древний баян", имеешь в виду другие способы стали намного быстрее?
|
|
07.09.2014, 23:26
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от bes
|
ситуации разные бывают
|
Да можно отстрелить себе ногу, зажарить и съесть, вместо того, чтобы почистить и зажарить картошку. Но зачем?
Сообщение от bes
|
если вешать на родителя, то чем тебе плох innerHTML?
|
Сообщение от Gozar
|
innerHTML сносит все обработчики
|
Сообщение от bes
|
говоря "древний баян", имеешь в виду другие способы стали намного быстрее?
|
А ты значит считаешь, что нужно вместо добавления к родителю, вырезать из родителя все дочерние узлы, со всей их вложенностью и затем рендерить опять?
Может перестанешь глупости писать? Очевидно, что добавление к родителю быстрее, чем перерендеринг старых эл+навешивание на них заново событий, если это вообще возможно, и рендеринг опять вместе с новыми.
Да это баян, дикий, ДРЕВНИЙ баян! Раньше небыло выхода, но стрелять себе в ногу уже минииум 5 лет как не нужно.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Последний раз редактировалось Gozar, 07.09.2014 в 23:28.
|
|
|
|