Добро пожаловать в пятый выпуск JavaScript Rising Stars, ежегодного обзора тенденций в мире JavaScript!

В 2020 году смысл проекта не изменился: изучение наиболее успешных проектов путём сравнения количества звёзд на GitHub за последние 12 месяцев.


В представленных ниже графиках сравнивается количество звёзд на GitHub за последние 12 месяцев. Мы проанализировали проекты, участвующие в Best of JS, отобранного списка лучших веб-проектов. Нажмите на проект, чтобы узнать подробнее про него.

Самые популярные проекты

1
Deno

Deno

A secure JavaScript and TypeScript runtime
+30.2k

Trends in 2020

2.8k
1.5k
1.0k
1.3k
13.7k
3.0k
1.3k
897
836
742
912
1.2k
Я
Ф
М
А
М
И
И
А
С
О
Н
Д

GitHub data

  • Создан
    2018-05
  • Total stars
    71.1k

Links

2
Vue.js

Vue.js

A progressive, incrementally-adoptable framework for building UI on the web
+22.5k
3
React

React

A declarative, efficient, and flexible JavaScript library for building user interfaces.
+19.8k
4
Playwright

Playwright

Node.js library to automate Chromium, Firefox and WebKit with a single API
+19.7k
5
VS Code

VS Code

Visual Studio Code
+19.1k
6
esbuild

esbuild

An extremely fast JavaScript bundler and minifier
+16.6k
7
Vue Element Admin

Vue Element Admin

A magical vue admin
+16.0k
8
eDEX-UI

eDEX-UI

A cross-platform, customizable science fiction terminal emulator with advanced monitoring & touchscreen support.
+15.7k
9
Next.js

Next.js

The React Framework
+15.5k
10
Tailwind CSS

Tailwind CSS

A utility-first CSS framework for rapid UI development.
+15.5k

По многим причинам 2020 год был очень необычным. Самое примечательное, что впервые за пять лет абсолютным победителем Rising Stars стал не Vue.js, а Deno... очень неожиданно!

Deno — среда выполнения JavaScript-кода от создателя Node.js Райана Дала.

Её часто считают продолжением Node.js, и опираясь на его 10-летний опыт работы в новой среде были исправлены многие недостатки и недоработки существующей платформы.

Среди отличительных особенностей можно отметить следующее:

  • Встроенный по умолчанию компилятор TypeScript (хотя ничего не мешает писать код на обычном JavaScript);
  • Отсутствие какого-либо централизованного менеджера пакетов, поэтому JavaScript-зависимость может быть загружена с любого URL-адреса;
  • Из коробки есть решения многих распространённых задач, которые в Node.js обычно потребовали бы установки сторонних пакетов;
  • Deno в максимальной степени ориентируется на стандарты веба (например, Fetch API);
  • Файлы импортируются при помощи ECMAScript-модулей;
  • Имеется собственный исполнитель тестов и отладчик.

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

Успешное развитие Deno говорит о двух довольно больших тенденциях:

  • Заметное увеличение использования TypeScript как во фронтенде, так и в целом на стороне клиента;
  • Всплеск количества динамически импортируемых ES6-модулей через такие инструменты как Snowpack (см. раздел «Инструменты сборки»).

Фронтенд-фреймворки

1
Vue.js

Vue.js

A progressive, incrementally-adoptable framework for building UI on the web
+22.5k
2
React

React

A declarative, efficient, and flexible JavaScript library for building user interfaces.
+19.8k
3
Angular

Angular

One framework. Mobile & desktop.
+13.3k
4
Svelte

Svelte

Cybernetically enhanced web apps
+12.0k
5
Alpine.js

Alpine.js

A rugged, minimal framework for composing JavaScript behavior in your markup.
+11.5k

Vue.js и React продолжают противостоять друг другу, находясь на вершине категории фронтенд-фреймворков.

За ними на третьей позиции теперь следует Angular, который поменялся местами с Svelte, занимавшего эту строчку рейтинга в 2019 году.

А пятерку лидеров замыкает совсем молодой проект Alpine.js — минималистичный реактивный фреймворк для браузера от автора Laravel LiveWire.

Он вдохновлён концепциями Vue.js и Angular, поскольку в нём есть и пользовательские HTML-директивы, и двусторонняя привязка...

Его довольно легко начать использовать, вставив старый-добрый тег <script> на HTML-страницу. Не нужно использовать инструменты для сборки, всё делается прямо из HTML-разметки, поэтому данный фреймворк может стать отличным решением для быстрого улучшения существующей веб-страницы без необходимости добавления полноценного фреймворка.

Из-за своей простоты и лёгкости для придания интерактивности веб-страницам, новенький инструмент хорошо интегрируется с современными фреймворками, например, с Elixir Phoenix. Уже есть даже специальный стек PETAL, который включает в себя как Alpine.js, так и Tailwind CSS.

Фреймворки Node.js

1
Next.js

Next.js

The React Framework
+15.5k
2
Strapi

Strapi

Open source Node.js Headless CMS to easily build customisable APIs
+11.8k
3
Nest

Nest

A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications on top of TypeScript & JavaScript (ES6, ES7, ES8)
+10.3k
4
Nuxt

Nuxt

The Intuitive Vue Framework
+8.2k
5
Blitz

Blitz

️The Fullstack React Framework — built on Next.js
+6.0k

Категорию фреймворков Node.js возглавляют два разных типа проектов.

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

А с другой стороны, у нас есть более классические решения, работающие только на сервере, к ним, например, относится Nest (лидер в прошлом году) или Fastify.

Как и в 2018 году, в категории фреймворков ведущее место занимает Next.js. В самом начале он был известен как инструмент для рендеринга React-приложений на сервере. Сейчас это известнейший фреймворк для создания фулстек-приложений с использованием React.

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

Что касается фулстек-фреймворков, то мы видим два новых претендента — Blitz и Redwood, которые призваны создать разработчикам максимальное удобство для разработки полноценных веб-приложений.

Интересно наблюдать, как появившийся 11 лет назад фреймворк Express до сих пор актуален в JavaScript.

Экосистема React

1
Next.js

Next.js

The React Framework
+15.5k
2
React Query

React Query

Hooks for fetching, caching and updating asynchronous data in React
+13.6k
3
Recoil

Recoil

An experimental state management library for React apps
+11.1k
4
Ant Design

Ant Design

A UI Design Language and React UI library
+10.9k
5
React Hook Form

React Hook Form

React Hooks for forms validation (Web + React Native)
+10.8k

Приглашённый автор: Ли Робинсон (Lee Robinson)

Ли Робинсон — разработчик, писатель и архитектор в Vercel.

Guest Writer leerob

Экосистема React в 2020 году прошла под эгидой стабильности. Хотя в новой семнадцатой версии React не было сделано никаких критических изменений, в ней была заложена основа для будущей работы — серверные React-компоненты.

Серверные компоненты React существенно меняют наше представление о создании React-приложений, уменьшая размеры клиентских бандлов и соответственно улучшая время загрузки. Кроме того, они упрощают загрузку данных и доступ к источникам данных (например, из баз данных и файлов).

Next.js стал самым популярным инструментом для разработки React-приложений. Его гибридный подход станет первым применением анонсированных серверных React-компонентов.

Укрепилась поддержка библиотек React Query, Recoil и React Hook Form, которые сконцентрировались вокруг использования хуков. Каждый из этих пакетов упрощает разработку приложений на React. В сочетании с отлично проработанными библиотеками компонентов, сейчас у React-разработчиков гораздо больше инструментов, чем когда-либо было раньше.

Экосистема Vue

1
Vue Element Admin

Vue Element Admin

A magical vue admin
+16.0k
2
Vite

Vite

Next generation frontend tooling. It's fast!
+14.1k
3
Nuxt

Nuxt

The Intuitive Vue Framework
+8.2k
4
Element Plus

Element Plus

A Vue.js 3.0 UI Library made by Element team
+7.3k
5
vue-next

vue-next

Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
+5.9k

Самой важной новостью в сообществе Vue.js является выпуск третьей версии фреймворка.

В этом крупном обновлении появился новый Composition API, который должен устранить известные ограничения второй версии Vue.js:

  • внутри компонентов было сложно разбить код по логическим частям;
  • теперь стало легче повторно использовать код в разных компонентах (во Vue 2 примеси, фабрика примесей и cлоты с ограниченной областью видимости не были удачным решением для этого);
  • более улучшенная и активная поддержка TypeScript.

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

Кроме этого, в 2020 году был представлен новый инструмент сборки под названием Vite, работающий на ES-модулях. Это самый быстрый способ работать с приложениями на Vue.js из командной строки.

Экосистема Angular

1
ngx-admin

ngx-admin

Customizable admin dashboard template based on Angular 10+
+2.5k
2
Material Design for Angular

Material Design for Angular

Component infrastructure and Material Design components for Angular
+1.5k
3
Scully

Scully

The Static Site Generator for Angular apps
+1.4k
4
Angular CLI

Angular CLI

CLI tool for Angular
+1.3k
5
NG-ZORRO

NG-ZORRO

Angular UI Component Library based on Ant Design
+1.2k

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

Речь идёт про Scully, статического генератора сайтов, который выводит Angular в мир Jamstack. Проект запустился в декабре 2019 года и имеет отличную документацию, которая поможет вам в освоении этого инструмента.

В 2020 году было три крупных релиза Angular.

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

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

Инструменты сборки

1
esbuild

esbuild

An extremely fast JavaScript bundler and minifier
+16.6k
2
Rome

Rome

The Rome Toolchain. A linter, compiler, bundler, and more for JavaScript, TypeScript, HTML, Markdown, and CSS.
+14.2k
3
Vite

Vite

Next generation frontend tooling. It's fast!
+14.1k
4
Snowpack

Snowpack

WASM-powered frontend build tool. Fast, lightweight, unbundled ESM.
+10.1k
5
Webpack

Webpack

A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows for loading parts of the application on demand. Through "loaders", modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff.
+4.5k

Приглашённый автор: Себастьян Лорбер (Sébastien Lorber)

Себастьян один из первых, кто начал использовать React, сейчас он работает над опенсорс-проектом Docusaurus от Facebook.

Guest Writer slorber

2020 был отличным годом для инструментов сборки: мы увидели много новых трендов.

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

Чтобы быть максимально эффективными и производительными, swc и esbuild используют преимущества Rust и Go; оба, кстати, поддерживают TypeScript.

Webpack часто называют очень сложным, и похоже, что такие более простые альтернативы как Parcel и Rollup достаточно выросли для использования в реальных проектах. Webpack по-прежнему остаётся стандартным инструментом сборки, который вместе с новым слоем кеширования может значительно улучшить производительность компоновки.

Монорепозитории становятся мейнстримом: для работы с ними активно применяются Yarn и Lerna, к которым присоединился ещё npm (с выходом седьмой версии).

Самые интересные лично для меня инструменты в 2021 году — Rome, Toast, Turborepo.

CSS-фреймворки

1
Tailwind CSS

Tailwind CSS

A utility-first CSS framework for rapid UI development.
+15.5k
2
Bootstrap

Bootstrap

The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first projects on the web.
+8.2k
3
Bulma

Bulma

Modern CSS framework based on Flexbox
+4.2k
4
new.css

new.css

A classless CSS framework to write modern websites using only HTML.
+3.1k
5
Halfmoon

Halfmoon

Front-end framework with a built-in dark mode and full customizability using CSS variables; great for building dashboards and tools.
+2.0k

В этом году мы впервые добавили эту категорию, чтобы подчеркнуть успех фреймворка Tailwind CSS и используемый им CSS-подход «utility-first».

По сравнению с более традиционными CSS-фреймворками вроде Bootstrap или Bulma, в нём предусматривается использование определённого способа именования, давая разработчикам стилизовать страницы и компоненты путём комбинации разных имён CSS-классов.

По данным прекрасного отчёта State of CSS, именно этот CSS-фреймворк имеет самый высокий показатель удовлётворенности.

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

CSS в JavaScript

1
Styled Components

Styled Components

Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress
+4.8k
2
Twin

Twin

Blends the magic of Tailwind with the flexibility of css-in-js
+2.8k
3
Emotion

Emotion

CSS-in-JS library designed for high performance style composition
+2.5k
4
Linaria

Linaria

Zero-runtime CSS in JS library
+1.8k
5
Theme UI

Theme UI

Build consistent, themeable React apps based on constraint-based design principles
+1.8k

Тестирование

1
Playwright

Playwright

Node.js library to automate Chromium, Firefox and WebKit with a single API
+19.7k
2
Storybook

Storybook

The UI component explorer. Develop, document, & test for React, Vue, Angular, Ember, Web Components, & more!
+12.3k
3
Puppeteer

Puppeteer

Headless Chrome Node.js API
+10.6k
4
Cypress

Cypress

Fast, easy and reliable testing for anything that runs in a browser.
+9.0k
5
Headless Recorder

Headless Recorder

a Chrome extension that records your browser interactions and generates a Puppeteer or Playwright script
+6.0k

Мобильная разработка

1
React Native

React Native

A framework for building native apps with React.
+8.8k
2
Expo

Expo

An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.
+4.3k
3
Quasar

Quasar

Responsive Single Page Apps, Server-side Render Apps, Progressive Web Apps, Hybrid Mobile Apps (that look native!) & Electron Apps, all using the same codebase.
+4.0k
4
Ionic

Ionic

A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.
+2.8k
5
Sonar

Sonar

A desktop debugging platform for mobile developers.
+1.8k

Разновидности/компиляторы JS

1
TypeScript

TypeScript

A superset of JavaScript that compiles to clean JavaScript output.
+10.4k
2
swc

swc

A super-fast compiler written in rust
+3.4k
3
Babel

Babel

A compiler for writing next generation JavaScript.
+2.7k
4
Reason

Reason

Simple, fast & type safe code that leverages the JavaScript & OCaml ecosystems
+818
5
Flow

Flow

Adds static typing to JavaScript to improve developer productivity and code quality.
+799

Управление состоянием

1
Recoil

Recoil

An experimental state management library for React apps
+11.1k
2
XState

XState

State machines and statecharts for the modern web.
+5.1k
3
Immer

Immer

Create the next immutable state by mutating the current one
+4.2k
4
Zustand

Zustand

Bear necessities for state management in React
+3.2k
5
Redux

Redux

Predictable state container for JavaScript apps
+3.2k

GraphQL

1
Gatsby

Gatsby

Build blazing fast, modern apps and websites with React
+7.4k
2
Hasura GraphQL Engine

Hasura GraphQL Engine

Blazing fast, instant realtime GraphQL APIs on Postgres with fine grained access control, also trigger webhooks on database events.
+5.9k
3
Redwood

Redwood

Bringing full-stack to the Jamstack.
+5.5k
4
Prisma

Prisma

Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server & SQLite
+4.0k
5
Apollo client

Apollo client

A fully-featured, production ready caching GraphQL client for every UI framework and GraphQL server
+2.4k

Обучающие ресурсы

1
JS Algorithms & Data Structures

JS Algorithms & Data Structures

Algorithms and data structures implemented in JavaScript with explanations and links to further readings
+31.9k
2
Node.js Best Practices

Node.js Best Practices

The Node.js best practices list (January 2021)
+20.2k
3
You Don't Know JS

You Don't Know JS

A book series on JavaScript
+18.0k
4
Clean Code

Clean Code

Clean Code concepts adapted for JavaScript
+15.1k
5
30 seconds of code

30 seconds of code

Short JavaScript code snippets for all your development needs
+13.3k

Заключение

Для JavaScript это был очередной замечательный год, который принёс несколько новых лидеров в различных категориях, отслеживаемых Best of JS.

Бэкенд-разработчики могут пощупать Deno и сразу же начать использовать TypeScript, не беспокоясь о каких-либо зависимостях.

А у фронтенд-разработчиков появились более быстрые и простые инструменты сборки, например, esbuild, Snowpack и Vite.

Если продолжать тему инструментов, с седьмой версии NPM стало возможным использовать механизм workspaces, который позволяет работать с несколькими пакетами в одном репозитории, раньше нечто подобное было одним из весомых преимуществ его конкурента Yarn.

Стилизация фронтенда идёт по неизменному пути, вместе с инструментами типа Tailwind CSS ещё больше упрощая работу и формируя экосистему на этой простой концепции.

Чего ожидать в 2021 году?

Любопытно узнать, куда приведут нас серверные React-компоненты.

Теперь, когда Себастьян Маккензи (Sebastian McKenzie) работает только над Rome, насколько далеко он зайдёт в попытке унифицировать инструментарий JavaScript. Станет ли его детище единственным инструментом для компиляции, тестирования, проверки кода и многого чего другого?

Мы будем пристально следить за фулстек-фреймворком Redwood, который хорошо интегрирован с GraphQL и вообще предоставляет уникальный способ получения данных, который они сами называют «cells».

Настоятельно рекомендуем ознакомиться с результатами потрясающего опроса State of JS, особенно если вам нужен другой взгляд на тренды, полученный от реальных разработчиков.

Спасибо, что были с нами, и до встречи в следующем году!

Russian version

Alexey Pyltsyn
Alexey Pyltsyn
Maintainer of Russian docs on PHP, React, Kubernetes and much more

Authors

Available Translations

English

日本語

Español

中文

한국어