Как стать автором
Поиск
Написать публикацию
Обновить

Нужно ли знать историю фронтенда, если просто пишешь на React? Да, и вот почему

Уровень сложностиПростой
Время на прочтение20 мин
Количество просмотров8K
Всего голосов 16: ↑16 и ↓0+16
Комментарии25

Комментарии 25

при изменении данных нужно было вручную найти нужный элемент через document.querySelector

ну до того, как появился querySelector, приходилось ставить id и искать по getElementById, или что еще хуже искать по tagName и className, вот это был ужас. А потом появился jQuery с его крутыми селекторами, и это было глотком свежего воздуха.

Справедливости ради - сперва появился prototypejs.

Хорошее верхнеуровневое описание для общего понимания - мне, как задовику (back-ender) понравилось. Подозреваю, правда, что там везде есть ещё много деталей, в которых черти прячутся, конечно, но мне, вроде как, с ними непосредственно не работать.

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

Интересно, есть ли какая-то связь или преемственность между браузерными фреймворками и десктопными UI-фреймворками? Ведь последние создавались гораздо раньше браузерных и существовали уже долгие годы. Логично было бы проанализировать лучшие варианты и воплотить их идеи в браузере.

Про фреймфорки не знаю, но про GUI мне есть, что сказать.

Браузер - это убогая фигня по сравнению с нативными (!!!) десктопными GUI.
Элементарный пример - вывести в что-то типа селекта (пофиг нативный браузерный или кастомный на li / div) ~35000 опций. И таких десяток на экране. Браeзерный список/нативный селект будет тупить, подлагивать при скролле, при первом открытии будет показывать радикально черный фон на несколько секунд и, вообще, ВСЁ на экране будет тормозить (пользоваться как-то можно, конечно, НО...). И нет, это не зависит от процессора и RAM. Там есть какой-то потолок, после которого наращивание мощностей не оказывает заметного влияния на производительность.

Теперь про клиентскую софтину, написанную на Решетке (здесь могу ошибаться, но точно не на Электроне, релиз был в 2009 году), с которой мне довелось работать. Там таких контролов на одном экране (не совсем - длинное полотнище со скроллом без подзагрузок) больше 10 могло быть с таким же кол-вом элементов (~35000), иногда меньше, иногда даже больше. Так вот, первоначальная загрузка (показывает лоадер) Value Lists могла тупить 10-20 сек. Сохраненные локально Value Lists НЕ создавали видимого лага. Более того, в этих контролах работала фильтрация по значениям из списка БЕЗ лагов. И да, в десктопном приложении кол-во RAM очень даже влияло на все, но 8GB было достатточно.

Вообще, преимущества браузерных бирюлек над нативными десктопными приложениями нужно искать с фонарями.

Интересно, это какие-то принципиальные ограничения платформы или банальная криворукость разработчиков всяких хромиумов?

Вообще-то, насколько я знаю, сейчас в браузерах вылизано все очень неплохо. А первоначальная загрузка у любого списочного контролами может идти двумя способами - в цикле добавление элемента и тут же перерисовка (добавление по умолчанию) или добавление всех элементов и только потом перерисовка, и это на порядки быстрее для очень длинных списков. Так что, возможно, не в браузере дело.

Кстати.

Value Lists могла тупить 10-20 сек.

И пипл хавал? Странно, терпеливые вам попались. Если брать данные из БД, то передать 35К коротких записей, это намного меньше 10-20 секунд. Но даже если бы это было 5-6 секунд, это уже плохо. В таких случаях пишут свой кастомный виртуальный контрол, который никогда не показывает все данные, а показывает только подмножество (часто даже и не все подмножество), когда пользователь начинает искать. Плюс, начальная загрузка в фоне. Лишние 2-4 дня разработки, зато супербыстро и удобно для пользователей.

Ха, 2-4 дня, чтобы доработать один контрол или NNN дней, чтобы перейти на новый фреймворк. А точнее, сначала ещё MMM дней, чтобы убедить тимлида, его начальника и его начальника.

Но спасибо за статью, я понял, кажется, отличие UI в Windows, например, и UI в браузере. В Windows все контролы это вещи в себе, как однострочный или многострочный редактор текста, или выпадающий список, или сложная таблица. Их структура и внутренняя иерархия не видна общему оконному движку. В браузере же все контролы, кроме (как я понял) редактора текста, это не вещи в себе, а подструктуры глобального DOM. Таким образом, если в обычном UI окне десктопного приложения десятки, ну максимум сотня объектов иерархии, которая управляется системой окон, то в DOM этих объектов легко могут быть тысячи и десятки тысяч. Это нехорошо, я считаю. В Виндах каждый контрол можно сделать кастомным, например испольющим виртуальный скролинг, и легко включить его в любой UI-фреймворк, потому что он имеет общий для всех интерфейс для работы с ним оконного движка. Надо было давно сделать так же в браузерах.

2-4 дня на каждый тривиальный контрол и 2-4 недели на каждый нетривиальный. Или потратить пару недель на изучение $mol и начать новый проект сразу на нормальном фреймворке.

$mol компоненты вы точно так же можете включить в любой фреймворк, не потеряв виртуализацию рендеринга.

Речь выше шла всего лишь об одном конкретном контроле. Но если контролы из $mol можно просто прикрутить к существующему проекту (разве можно?), то так конечно лучше.

Уже сделано - Web Components.

Почитал - очень разумно. Но как имеющий смутное представление о фронтенде, не знаю, как широко это используется и есть ли уже готовые контролы, использующие этот фреймворк.

Пустота...
Пустота...

А на вкладке Network что творится?

Нет конекта к сокетам wss://sync-pmzz.onrender.com/ и wss://sync.hyoo.ru/

А откуда вы подключаетесь?

Москва, МГТС без ВПН

Нет, фронтендеры никогда на десктоп не смотрели, а всё переизобретали заново.

Чтобы взять какие-то стоящие идеи с декстопа, надо быть хорошим разрабом десктопа, а потом сменить специализацию на фронтенд. Таких разработчиков сильно меньше, чем тех, кто сразу начинал с веба, поэтому и преемственности практически не было.

Интересно, есть ли какая-то связь или преемственность между браузерными фреймворками и десктопными UI-фреймворками?

Microsoft попробовала в ASP.NET WebForms перенести идеологию разработики для десктопа в веб (правда, строго говоря, там речь шла не о front-end, а создании HTML на севере, это, похоже на нынешний SSR, но жестче - клиент был пассивным). Получилось плохо.

Да, я помню эти asp- и jsp-страницы. Но "это другое" (с)

Вы помните немного не то: WebForms - это .aspx (впрочем первые версии ASP.NET MVC тоже могли быть .aspx, Razor появился позднее).

Silverlight тут стоит вспомнить тогда уже, как продолжение идеи WPF c XAML-версткой.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий