Пришло Ли Время Покинуть Виртуальный Дом [React]?

Аудиоверсия на русском языке (Яндекс.

музыка) / iTunes Давайте посмотрим, что не так с фреймворками как с подходом и каким может быть следующий этап развития фронтенд-архитектуры.



Пришло ли время покинуть виртуальный дом [React]?

Отказ от ответственности: Это вольный перевод статьи.

Стиль повествования может не совпадать со стилем автора.

Никакие идеи, предположения, факты или мнения не были удалены или добавлены.

Я занимаюсь разработкой веб-приложений более 10 лет и за это время видел взлет и падение многих библиотек и фреймворков Javascript. Одни сменяют другие, разные подходы к архитектуре чередуются друг с другом, и в этом адском бульоне изменения неизбежны.

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

Сегодня самые популярные фреймворки решают проблемы, созданные их предшественниками.

Чтобы понять, почему это происходит, давайте вернемся к заре jQuery.

jQuery

Были времена, когда кроссбраузерность стоила разработчикам боли и крови.

JQuery и связанные с ним библиотеки были основным способом сделать все для всех за один раз.

И все же мне пришлось споткнуться и здесь.

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

Вишенкой на торте было отсутствие архитектуры у этих плагинов, которые хотели бы взаимодействовать друг с другом, однако было не ясно, как этого добиться, чтобы они не мешали работе друг друга.

Любая новая структура, которая решает проблемы, также создает новый спрос на улучшения.



требуетсяJS

В какой-то момент истории библиотеки начали превращаться в фреймворки и стали основой для целых веб-приложений.

Это был рассвет развития модульной архитектуры.

Появились фреймворки с асинхронными модулями (AMD), requireJS, Dojo и их современники.

Предприятие оперативно отреагировало и включило появившиеся инновации в свои разработки.

Итак, вскоре уже существовало несколько несовместимых стандартов, зародившихся внутри модульной экосистемы Javascript. Даже сообщество HTML ухватилось за возможность присоединиться к веселью и выпустить проект стандарта веб-компонентов.



Веб-компоненты

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

Браузеры не спешили поддерживать такие возможности изначально.

И тем не менее, это породило новую эру компонентных фреймворков, таких как Angular и React. Они дали нам возможность управлять жизненным циклом компонентов, а остальное вы наверняка знаете сами.



Угловая версия 1.x

Angular версии 1 покорил Интернет и стал новым стандартом веб-разработки благодаря своей волшебной способности динамически изменять HTML с помощью Watchers. По мере увеличения размера приложения появлялось множество проблем, в том числе падение скорости обновления и рендеринга из-за отслеживания изменений страницы и состояния компонентов.

Все это было не быстро и не очень эффективно при использовании среднего или большого количества компонентов и наблюдателей.



РеактJS

React появился с улучшенным механизмом отслеживания изменений и обновления страницы, который разработчики назвали моделью виртуального документа.

На тот момент он превосходил Angular по производительности.

А затем Angular эволюционировал во 2 версию в попытке решить проблемы 1, однако произошло это несколько позже, чем должно было случиться, так как React к тому времени уже захватил железный трон.

Помимо этих двух персонажей, на этой сцене есть и другие.

Например, View, который лучше себя проявляет в моменты, когда Angular и React ему уступают. История продолжается, и эти рамки развивались.

Они выпускают новые версии, пытаясь совершенствоваться с каждым выпуском.

При этом сохраняется обратная совместимость, поэтому архитектура не меняется.



Вы улавливаете закономерность?

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

Или есть ли альтернативы, способные решить эти недостатки

Пришло ли время оставить виртуальный дом React позади и двигаться дальше?

Чтобы ответить на этот вопрос, нам нужны две вещи: Список недостатков, которые невозможно исправить без нарушения обратной совместимости И есть ли сегодня альтернативные подходы к этому?

Недостатки

Прежде всего стоит отметить, что React — замечательная экосистема, с которой приятно работать.

Я использую React некоторое время, и он помог мне разрабатывать приложения просто, эффективно и быстро.

Однако это не значит, что оно идеально.

Итак, все те фреймворки, о которых мы говорили ранее, в своей работе в основном полагаются на браузер.

Как пример: отслеживание изменений на странице и в объектах, наблюдателях, виртуальном доме.

Независимо от того, насколько эффективен алгоритм сравнения, он всегда будет съедать аппаратные ресурсы клиента.

Хотя были попытки использовать обходные пути, такие как веб-воркеры и компиляция байт-кода, для ускорения выполнения, однако основные проблемы остаются теми же.

Приложение должно быть доставлено пользователям с включенными библиотеками и зависимостями, независимо от того, насколько оно маленькое или большое.

Средний размер современных веб-страниц уже пересек черту в 2 мегабайта, которая в большинстве случаев содержит неиспользуемые функции и методы.



Сегодняшние альтернативы

Можем ли мы продолжать пользоваться этими фреймворками, не перегружая код в сборках и пакетах? Получите идеальный опыт для разработчиков и пользователей? Ну да! Svelte/Stencil/Angular elements/Polymers/Web-компоненты — примеры тренда, который набирает обороты.



Пришло ли время покинуть виртуальный дом [React]?

Svelte, в частности, изначально привлек мое внимание, потому что это скомпилированный фреймворк.

Вместо того, чтобы во всем полагаться на браузер, Svelte выполняет всю работу во время компиляции, и клиенту отправляются только готовые HTML, CSS и JavaScript. Этот бандл не содержит кода самого фреймворка и не зависит от него.



В заключение

Так какова закономерность? Прогресс — это типичная закономерность.

Общая проблема существует в большинстве современных фреймворков, которые выплескивают массу внутренних методов на клиенте и полагаются на ресурсы браузера для управления состоянием, маршрутизации и подобных вещей.

Решение этих проблем в будущих выпусках означает нарушение обратной совместимости.

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

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

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

Теги: #Разработка сайтов #JavaScript #frontend #vue.js #react.js #angular #angularjs

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.