Популярность фреймворка JavaScript циклична.

В настоящее время доминирующей веб-платформой является React, и среди веб-разработчиков ведутся огромные споры о том, останется ли она доминирующей в будущем.

Были аргументы в пользу того, что React может отличаться от предыдущих фреймворков и достичь постоянного доминирования в экосистеме.

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

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

Если вы собираетесь изучать один фреймворк, что это будет: Vue или React? Что будет лучше для вас в долгосрочной перспективе?

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

Здесь много места для мнений, но что говорят данные?

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

Следуйте за мной, и я покажу вам, почему.

Прогнозы на основе данных

На основе ажиотажа легко делать прогнозы. Но информация, основанная на данных хайпа, таких как звезды github, не очень предсказывает фактическое использование.

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

Чтобы понять, где были эти фреймворки, и спрогнозировать, где они, вероятно, пойдут, я написал код для извлечения данных из API NPM, чтобы вникнуть в историю этих двух фреймворков, когда дело доходит до зависимостей и загрузок.

Затем я выгружал эти данные в MySQL и вытаскивал сводки в электронные таблицы, чтобы просматривать и отображать данные.

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

Краткая история React и Vue

Поскольку эти структуры находятся в разных точках своего жизненного цикла и «циклов шумихи», сравнение 1 к 1, где они находятся сегодня, не очень помогает. Изучая их истории, мы можем сравнить, где они находятся относительно их жизненных циклов.

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

React с открытым исходным кодом в мае 2013 года, первая мажорная версия (изменение с 0.14.8 на 15.0.0) в апреле 2016 года. Странный подход к версиям; и они признали, что долгое время оставались стабильными.

Vue с открытым исходным кодом в феврале 2014 г., 1.0 в октябре 2015 г.

Обе библиотеки начинались довольно медленно. У нас нет информации о количестве загрузок за это время, но у нас есть есть информация о зависимостях.

Я использовал API зависимостей NPM для получения списков пакетов, которые зависят от React и Vue, и, глядя на то, когда эти пакеты были созданы, мы можем получить картину того, сколько пакетов зависело от каждой структуры с момента их создания.

Этот механизм измерения не идеален - мы не получаем информации о том, когда пакеты добавили зависимость, поэтому они могли быть созданы до того, как зависели от React или Vue.

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

Траектория роста React

Наши измерения показывают 15 пакетов в зависимости от React на момент его анонса в 2013–05–03. Год спустя это число составляет всего 68.

Через год React действительно начал набирать обороты - с 2014–03 по 2015–05–03 количество зависимостей выросло почти в 10 раз, до 618. Когда мы впервые начали получать информацию о загрузке - конец февраля 2015 года. - React уже загружал в среднем около 7000 загрузок в день на NPM.

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

Траектория роста Vue

Как и React, Vue начинал медленно.

Когда в 2014–02–03 фреймворк вышел на версию 1.0, от него зависело всего два пакета. К 2015–02–03 гг. Это число выросло до 16. Наши первые данные о загрузках в конце февраля 2015 г. показывают невысокие сотни загрузок в день.

Ускорение Vue заняло больше времени, чем React. Через 2 года с 1.0 по 2016–02–03 у него все еще было только 95 пакетов, в зависимости от этого, и в среднем около 1000 загрузок в день на NPM.

Переломный момент для Vue наступил на третий год, когда количество зависимостей выросло с 95 до 828, а ежедневные загрузки NPM в среднем превысили 10 000.

Как точно сравнить

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

Сначала я подумал, что лучше всего начать с их первых выпусков с открытым исходным кодом или их первых крупных выпусков, но, как мы видели, React ускорился гораздо раньше после выпуска - вероятно, из-за того, что за этим стоит Facebook.

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

Использование любой из этих точек в качестве отправной точки затрудняет сравнение - ясно, что экосистема Vue быстро ускоряется в более поздние сроки, но фреймворки начинаются в таких разных местах, что их трудно сравнивать.

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

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

Для этого я собираюсь произвольно определить «большую тягу» как дату, когда в фреймворке впервые появилось 1000 пакетов в зависимости от них.

Мы могли бы так же легко запустить это путем загрузок, скажем, когда пакет впервые достиг 10 000 загрузок в день, но эти данные намного шумнее.

Сравнение траекторий от 1000 зависимостей

Впервые React обнаружил 1000 зависимостей в 2015-08-05: через год и три месяца после того, как был открыт исходный код.

Впервые Vue обнаружил 1000 зависимостей в 2017–03–16 годах, то есть через три года после того, как он был открыт, и через год и 1 месяц после выпуска 1.0.

Это долгий медленный старт. Что действительно интересно, так это то, что с тех пор сделала каждая экосистема фреймворка.

Оба они продолжали расти бурными темпами, но на графике мы видим, что Vue рос немного медленнее в момент, когда он достиг 1000 пакетов, но ускоряется быстрее, чем React, и при этом point имеет больше пакетов, чем React за аналогичный период времени после выпуска.

Картина загрузок более мутная - что касается еженедельных загрузок из NPM, Vue отслеживает аналогичную, но немного более низкую кривую роста, чем React:

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

Я думаю, что эти данные показывают, что популярность Vue.js - это не просто шумиха.

Экосистема Vue стремительно набирает обороты.

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

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

Сегодня React выглядит доминирующим, но пять лет назад было трудно представить, что доминирование jQuery когда-нибудь исчезнет.

Возможно, React изменит тенденцию, но если нет, мне кажется, что Vue.js готов стать новым доминирующим игроком.

P.S. - Если вы заинтересованы в изучении Vue, я только что запустил LearnVueJS.com, проект, посвященный обучению разработчиков Vue.js, и предлагаю набор бесплатных вебинаров по основам Vue.

Первоначально опубликовано на zendev.com 16 октября 2018 г.