Angular, React, Vue и другие — это разные варианты интерфейсных веб-фреймворков, некоторые из которых больше ориентированы на полную архитектуру приложений, в то время как другие концентрируются на конкретных областях приложений, но все они имеют одну общую черту: все они построены на JavaScript и требуют его. чтобы они выполнялись внутри веб-браузера. Все они также требуют определенного уровня минимальной поддержки браузера.

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

Если старый браузер встречает новый HTML-элемент, который он не понимает, например. тег ‹video› браузер игнорирует его и продолжает отображать остальную часть страницы. То же самое верно и для CSS, поскольку свойства и значения просто игнорируются, если браузер их не понимает. К сожалению, то же самое не верно для JavaScript.

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

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

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

Итак, каково решение? Прогрессивное улучшение есть. Давайте вернемся назад и посмотрим, как Интернет работал до сих пор без JavaScript. Новые страницы, в отличие от «современных» одностраничных приложений, зависящих от JavaScript, запрашивались путем нажатия простого тега привязки, который представлялся как ссылка на странице для конечного пользователя, а формы отправлялись на внутренний сервер для проверки и инициирования выполнения. бизнес-логика. «Значит, лучший способ создавать приложения — вернуться к этому старому способу создания? Но тогда у меня ужасные обновления экрана всей страницы, и мне приходится ждать, пока форма не будет отправлена, прежде чем пользователь будет уведомлен об ошибках проверки!» Я слышу, как ты плачешь, и да, я согласен, что это было бы шагом назад. Поэтому вместо этого я предлагаю улучшить JavaScript для создания одностраничных приложений и немедленной проверки пользователем полей формы перед отправкой. Это означает, что если наш JavaScript работает нормально, пользователь получает современный опыт, но если это не так, вместо сломанного приложения он все еще может выполнять действия, которые хотел, и приложение все еще работает. ЭТО ЕЩЕ РАБОТАЕТ!

У этого подхода есть еще несколько преимуществ: приложения не нужно создавать с использованием такого количества инструментов и шагов сборки, как кажется, продвигают текущие фреймворки JavaScript, у разработчиков меньше инструментов для изучения, и пользователи могут использовать любой браузер, который им нравится (даже IE6!), первоначальная настройка приложения выполняется намного быстрее, поэтому меньшие затраты и потенциал меньшего количества кода означают меньшие приложения, что ускоряет работу пользователей!

Для получения дополнительной информации по этой теме я предлагаю: Пост в блоге Джереми Кейта «Be Progressive» и Книга Аарона Густафсона «Адаптивный веб-дизайн».