Непреодолимый жизненный цикл фреймворков Javascript

Лишь немногие технологии являются неотъемлемой частью Интернета в том виде, в котором мы его знаем сегодня, как Javascript. В то время как существуют десятки бэкенд-решений - от глючного и традиционного PHP до таких относительных новичков, как Python и Node.js, - для разработки фронтенда существует только один скриптовый язык. 
\r\nНеважно, используете ли вы транскриптор или авангардные альтернативы вроде PyScript. Все, в конечном счете, должно быть переведено на Javascript для работы в браузерах. Хорошо это или плохо, но это означает, что каждый веб-разработчик должен хотя бы в общих чертах знать этот язык.
\r\nВ мире существует огромное количество Javascript-фреймворков - от почти повсеместно известных Angular, React и Vue.js до менее распространенных, но не менее интересных Meteor, Mithril или Polymer. Многие из этих решений предназначены не только для фронтенда. Например, упомянутый выше Node.js быстро стал одной из самых удобных и популярных сред исполнения на рынке. 
\r\nЕсли кажется, что это слишком много, то так оно и есть. Жизненный цикл Javascript и его многочисленных производных вызывает головную боль, но на это есть свои причины. Почему это происходит? И каковы последствия для наших проектов? Прежде чем мы ответим на эти вопросы, небольшой урок истории.<\/p>\r\n\r\n

Рождение Javascript<\/h2>\r\n\r\n

В 90-е годы прошлого века Всемирная паутина (то, что мы привыкли называть Интернетом) была совсем другим местом. Идея динамических веб-страниц ограничивалась счетчиком посещений в нижней части страницы, который увеличивался каждый раз, когда кто-то посещал сайт. Другими словами, Интернет был статичен, и компания Netscape хотела это изменить.
\r\nСовместно с компанией Sun Microsystems Netscape внедрила в свой флагманский браузер язык программирования Java в качестве скриптового решения. В то время язык Java был на пике популярности. Он был популярным, мощным, а главное - революционным в области разработки программного обеспечения, поскольку выводил объектно-ориентированное программирование на передний план.
\r\nВ какой-то момент руководители Netscape решили, что лучше создать новый язык, а не полагаться на лицензию третьей стороны. Поэтому они передали проект Брендану Эйху, и через 10 дней на свет появился JavaScript. Да, вы правильно прочитали: через 10 дней. Официальный релиз JavaScript состоялся в декабре 1995 г., а через год Netscape представила его в Ecma International в качестве отправной точки для создания стандартной спецификации, которой могли бы соответствовать все производители браузеров. Остальное - история.
\r\nК 2023 году 98% всех веб-страниц в той или иной мере использовали JavaScript. Тот самый сборный язык, который был создан за 10 дней, превратился в мощнейший джаггернаут в области веб-разработки. Но, как мы увидим, процесс был далеко не простым.<\/p>\r\n\r\n

\"\"<\/p>\r\n\r\n

Ранний JavaScript, jQuery и AJAX<\/h2>\r\n\r\n

JavaScript всегда имел репутацию глючного и причудливого языка. И, честно говоря, это не совсем так. Хотя за последние 20 лет этот язык значительно продвинулся вперед, многие его недостатки можно отнести к ранним версиям и поспешному циклу разработки. Надо отдать должное Эйху, он совершил впечатляющий инженерный подвиг, но некоторые вещи можно исправить только со временем и тестированием.
\r\nЯзык неэффективен, неструктурирован и неэлегантен. В нем присутствуют конкурирующие парадигмы, заложенные в его конструкцию, и дублирующие друг друга функции. Он ужасно многословен для одних вещей и довольно скромен для других. Но он решил большую проблему и благодаря очень заинтересованному сообществу нашел свое место в технологической индустрии.
\r\nВо многом JavaScript был спасен одной из самых популярных библиотек - jQuery. Этот небольшой проект позволил упростить JavaScript и найти решения проблем, с которыми сталкивались разработчики, в том числе AJAX - набор методов веб-разработки, использующих различные технологии на стороне клиента для создания асинхронных веб-приложений.
\r\nВ общем, jQuery послужил призывом к сплочению разработчиков. Он дал общую почву для формирования парадигм веб-разработки, и оказался настолько удачным и удобным, что и по сей день используется более чем в 70% всех веб-страниц. Как же мы перешли от этой достаточно стабильной парадигмы к кризису жизненного цикла, в котором мы живем сегодня?<\/p>\r\n\r\n

JavaScript после 2010-х годов<\/h2>\r\n\r\n

Развитие JavaScript никогда не останавливалось. Фактически, большинство вещей, которые jQuery делал в самом начале, теперь являются частью обычного JavaScript. Начиная с ECMA6 в 2015 г., мы получаем ежегодные изменения, начиная от небольших изменений и заканчивая огромными дополнениями, такими как функции async. Это говорит о том, что экосистема JavaScript динамична и постоянно развивается, а о стабильности практически не заботится.
\r\nФреймворки JavaScripts, особенно самые популярные, известны тем, что получают новые редакции. Например, Angular за 10 лет своего существования на рынке пережил 14 ревизий. Vue.js? 19 версий за 8 лет. У React с 2013 по 2022 год было 18 версий. Для сравнения, у языка C++ за 20 лет было 6 основных версий. Диспропорция очевидна.
\r\nЭтот рост идет параллельно с увеличением вычислительной мощности компьютеров\/умных устройств, а также возможностей веб-браузеров. Проще говоря, это самоподдерживающийся цикл: более совершенные браузеры требуют более совершенных фреймворков, а те, в свою очередь, подталкивают к совершенствованию браузерных технологий.
\r\nКроме того, в JavaScript-культуре принято следовать текущим тенденциям, отдавая предпочтение новым технологиям перед проверенными решениями. Анализ тенденций развития фреймворков на StackOverflow показывает, что интерес к фреймворкам падает уже через пару лет, и только React сохраняет устойчивый рост с 2016 по 2023 год.
\r\nБеговая дорожка ревизий, безусловно, вызывает привыкание. Легко увлечься новой новинкой, не понимая, как она повлияет на наши продукты. Особенно это касается амортизации. Хотя большинство компаний достаточно разумны и тщательно изучают документацию перед внедрением обновления, легко пропустить пару строк. И что в итоге? Неожиданно код перестает быть совместимым с фреймворком.<\/p>\r\n\r\n

Что это значит для вашего бизнеса<\/h2>\r\n\r\n

С одной стороны, наличие такого огромного и энергичного сообщества - это замечательно. Экосистема вышла из-под контроля, и теперь мы видим, насколько мощными могут быть JavaScript и веб-приложения. С другой стороны, усталость от JavaScript - это реальность. Разработчики испытывают стресс, выгорание и разочарование, потому что очень сложно успевать за всеми изменениями в экосистеме за столь короткий промежуток времени. 
\r\nДействительно ли вам необходимо следить за последними версиями? Возможно. Единственный разумный совет, который я могу дать на данный момент, - это понять, что не все изменения хороши и что новые редакции всегда в той или иной степени требуют переобучения. Не стоит бросаться на амбразуру, если текущее решение приносит результат. Другими словами, подумайте, прежде чем прыгать.<\/p>\r\n","excerpt_hint":"Лишь немногие технологии являются неотъемлемой частью Интернета в том виде, в котором мы его знаем сегодня, как Javascript. В то время как существуют десятки бэкенд-решений - от глючного и традиционного PHP до таких относительных новичков, как Python и Node.js, - для разработки фронтенда существует только один скриптовый язык. \r\nНеважно, используете ли вы транскриптор или авангардные альтернативы вроде PyScript. Все, в конечном счете, должно быть переведено на Javascript для работы в браузерах. Хорошо это или плохо, но это означает, что каждый веб-разработчик должен хотя бы в общих чертах знать этот язык.\r\nВ мире существует огромное количество Javascript-фреймворков - от почти повсеместно известных Angular, React и Vue.js до менее распространенных, но не менее интересных Meteor, Mithril или Polymer. Многие из этих решений предназначены не только для фронтенда. Например, упомянутый выше Node.js быстро стал одной из самых удобных и популярных сред исполнения на рынке. \r\nЕсли кажется, что это слишком много, то так оно и есть. Жизненный цикл Javascript и его многочисленных производных вызывает головную боль, но на это есть свои причины. Почему это происходит? И каковы последс"}