Раньше простой javascript вместе с несколькими другими библиотеками, такими как jQuery и Ajax, использовался для проверки форм и создания интерактивных пользовательских интерфейсов. Однако создавать сложные и интерактивные пользовательские интерфейсы с помощью ванильного javascript было ни интуитивно, ни эффективно.
И именно поэтому фреймворки JavaScript начали появляться повсюду.
Где-то в 2009 году инженеры Google создали MVC-фреймворк Angular для веб-разработки и сделали его открытым для публичного использования. Примерно в то же время Райан Даль создал фреймворк Node.js, который предоставил возможность использовать Javascript на стороне сервера.
Angular вместе с Node.js предоставил разработчикам возможность создавать приложения с полным стеком, используя только javascript, css и html, уменьшая зависимость от серверных технологий, таких как PHP, Java, Ruby и Python Django и т. д.
Вскоре после Angular Facebook создал React, что еще больше вдохновило разработчика Эвана Ю на создание фреймворка Vue. И React, и Vue стали популярными, поскольку оба обеспечивают лучшую производительность разработчиков и производительность во время выполнения благодаря использованию Virtual DOM. Мы поговорим о Virtual DOM чуть позже.
За последние пару лет мы наблюдаем новое поколение фреймворков javascript, таких как Svelte и SolidJS, которые привносят новые инновации в разработку внешнего интерфейса и составляют жесткую конкуренцию уже установленным фреймворкам.
Многие другие фреймворки, такие как Ember, Knockout, Backbone, Aurelia, Polymer и Ionic, появились между ними, некоторые из них все еще процветают и выживают, в то время как другие приближаются к концу жизни.
Как помогают Javascript Frameworks?
Платформы Javascript предоставляют общую структуру, повторно используемые компоненты и уровень абстракции для разработчиков, чтобы расширить функциональность и добавить бизнес-логику.
Количество кода, которое необходимо написать, резко сокращается, если вы используете платформу, которая лучше всего соответствует требованиям проекта. Меньше кода, меньше дефектов и меньше времени на выпуск приложения.
Ниже вы найдете краткий обзор лучших фреймворков JavaScript, предлагаемых ими функций, основных концепций и названий различных компаний, использующих эти фреймворки.
Стройный
На сегодняшний день Svelte является самой любимой средой и предпочтительным выбором для создания реактивных и производительных пользовательских интерфейсов. Рич Харрис создал Svelte еще в 2016 году с целью обеспечить более высокую производительность по сравнению с существующими платформами, такими как Angular, React и Vue.
Основная философия Svelte заключается в том, чтобы поставлять минимальный код, избегать шаблонов, работать непосредственно с реальным DOM и минимизировать вычисления в браузере.
Svelte предлагает радикально новый подход и уменьшает размер javascript, отправляемого по сети в браузер, а также уменьшает количество манипуляций с деревом DOM. Посмотрим как-
Как работает Svelte?
Пользовательский интерфейс в Svelte состоит из компонентов, каждый из которых во время сборки соответствует независимому от фреймворка ванильному Javascript. Структура компонентов больше похожа на обычный старый HTML, где сценарий добавляется в теги ‹script›‹/script›, css включается в теги ‹style›‹/style›, а разметка больше похожа на надмножество HTML с привкусом Svelte.
Состояние компонентов управляется в хранилище Svelte (объект javascript), которое уведомляет компоненты по мере изменения состояния. Javascript, поставляемый с компонентами, хирургически обновляет DOM вместо повторного рендеринга всего DOM или всего компонента.
Обратите внимание, что Svelte не использует алгоритмы сравнения DOM или какие-либо другие внешние библиотеки, автономные компоненты включают необходимый код для обновления элементов DOM в ответ на события изменения состояния.
Ключевые особенности/преимущества Svelte приведены ниже:
- Компоненты компилируются в javascript во время сборки, что приводит к небольшому размеру пакета, меньшему использованию памяти, более высокой производительности во время выполнения.
- Простота в освоении, не требуется JSX, нет сложных API Angular. Вы можете начать создавать приложения, используя простой javascript (или TS) вместе со спецификациями html, css и Svelte.
- Возможность переключения на рендеринг на стороне сервера вместо манипуляций на стороне клиента.
Несмотря на то, что вначале Svelte росла медленно, теперь она по результатам многих опросов разработчиков входит в число лучших фреймворков JavaScript. Сообщество Svelte растет быстрее и составляет жесткую конкуренцию таким признанным игрокам, как React и Vue.
Многие известные веб-компании, такие как Bloomberg, The New York Times, TeamSpeak, Reuters, Brave и даже Facebook, уже включили Svelte в свой внешний стек.
Реагировать
Экосистема React в целом предоставляет необходимые библиотеки и инструменты для создания сложных, динамичных и масштабируемых пользовательских интерфейсов. Многие другие современные фреймворки, такие как Svelte, Vue и SolidJS, черпали вдохновение в React и унаследовали многие функции и принципы проектирования, впервые представленные React.
React продемонстрировал беспрецедентный рост за последние пять лет и по-прежнему занимает первое место в рейтинге наиболее часто используемой среды разработки интерфейса. Платформа React поддерживается Meta (ранее Facebook) и поддерживает пользовательский интерфейс как Facebook, так и Instagram.
Вскоре после своего выпуска в качестве платформы с открытым исходным кодом в 2013 году React затмил уже зарекомендовавший себя Angular в таких областях, как продуктивная разработка, производительность во время выполнения, экосистема, функции и даже диаграммы вакансий.
Как работает React?
Чтобы установить контекст: Пользовательский интерфейс в браузере представлен деревом DOM, и при изменении состояния приложения пользовательский интерфейс обновляется из-за изменений, внесенных в дерево DOM кодом приложения. Однако внесение изменений в DOM при каждом изменении состояния обходится дорого и становится неэффективным, когда интерфейсы становятся сложными и динамичными.
Говоря о React, пользовательский интерфейс (и, следовательно, базовый DOM) приложения состоит из компонентов React, которые отображают пользовательский интерфейс в соответствии с данными, переданными компонентам в качестве свойств.
React создает виртуальный DOM в кеше, который является копией DOM браузера, а также поддерживает состояние приложения. По мере изменения состояния React обновляет виртуальную модель DOM, используя механизм, называемый сравнением, а затем обновляет реальную модель DOM, используя механизм, называемый согласованием.
Важно отметить, что использование Virtual DOM привело к повышению производительности по сравнению с Angular и другими фреймворками, которые полагались на рендеринг на стороне сервера и другие методы.
Ключевые особенности/преимущества React-
- При поддержке Facebook постоянно совершенствуется, чтобы оставаться конкурентоспособным с новыми фреймворками.
- Код React является декларативным, что упрощает его чтение и отладку.
- Поддерживает однонаправленный поток данных (односторонняя привязка данных) с использованием архитектуры Flux.
- Огромная экосистема, относительно простая в освоении, хорошая документация.
- Легко тестировать и отлаживать в браузере.
Чтобы продолжать инновации и соответствовать современным платформам, React представила новую архитектуру волокон, которая работает по принципу инкрементного рендеринга и разделяет задачу рендеринга на несколько кадров. Мы рассмотрим волоконную архитектуру в отдельной статье.
Вы также можете использовать знания React для создания кроссплатформенных приложений для мобильных устройств, компьютеров и Интернета с помощью React Native. Популярные гибридные среды разработки приложений, такие как Ionic, также поддерживают React из коробки.
Вью
Vue — это прогрессивная веб-инфраструктура для создания реактивных, сложных и масштабируемых пользовательских интерфейсов с использованием декларативного синтаксиса. Он был создан бывшим инженером Google Эваном Ю еще в 2014 году с целью повысить производительность разработчиков и производительность приложений.
На сегодняшний день его используют фрилансеры, стартапы, а также крупные предприятия для создания интерактивных веб-интерфейсов. Компании, использующие Vue в своем общем стеке, включают такие имена, как Nintendo, Upwork, Behance, Gitlab, Apple и Google.
Подобно React, Vue использует виртуальную модель DOM, использует компонуемые компоненты пользовательского интерфейса для представлений, поставляется с минимальным ядром, сопровождаемым отдельными библиотеками для управления состоянием, поддержки маршрутизации, рендеринга на стороне сервера, модульного тестирования, отладки и многого другого.
Ключевые особенности/преимущества Vue приведены ниже:
- Vue привносит оптимизацию производительности рендеринга в готовом виде: при изменении состояния Vue выборочно повторно рендерит компоненты вместо того, чтобы повторно рендерить все дерево компонентов.
- Компоненты Vue можно создавать с использованием простых HTML-шаблонов и оставлять JSX необязательным. Это значительно упрощает веб-разработчикам начало работы над проектами Vue.
- CSS можно включить непосредственно в файл компонента с помощью тегов ‹style›‹/style›, это ограничивает область действия CSS самим компонентом.
Одной из ключевых причин, по которым разработчики быстро адаптировались к Vue, является его гибкость: вы можете постепенно использовать Vue в своих существующих проектах, а не делать все это во Vue.
Ниже приведены некоторые варианты использования Vue-
- Используйте его для улучшения разметки HTML без какого-либо этапа сборки.
- Создавайте независимые веб-компоненты, которые можно повторно использовать и встраивать в существующие приложения.
- Используйте его для создания статического сайта, а также для рендеринга на стороне сервера.
- Создавайте настольные приложения на основе Electron, гибридные мобильные приложения или инструменты CLI.
Вы также можете использовать знания Vue для разработки кроссплатформенных мобильных приложений с помощью Weex и Ionic framework. Подобно React Native, сообщество Vue придумало Vue Native, но теперь это устарело.
NuxtJS
NuxtJS — это современная инфраструктура высокого уровня, построенная на основе Vue и нацеленная на повышение производительности разработчиков за счет разумных значений по умолчанию для распространенных случаев использования. Nuxt больше похож на фреймворк с батарейками, и его можно использовать для создания полнофункционального веб-приложения за считанные часы.
С Nuxt разработчики могут сосредоточиться на логике приложения, а не на общей конструкции архитектуры приложения. Ядро среды Nuxt включает в себя структуру Vue и, следовательно, работает в основном так, как работает Vue.
Ключевые преимущества Nuxt по сравнению с Vue или другими фреймворками, такими как React и Angular, следующие:
- Предварительно настроенная сборка с полезными настройками по умолчанию, включая оптимизированные для SEO метатеги и генерацию разумных маршрутов.
- Опция рендеринга на стороне сервера доступна из коробки.
- Возможность использования встроенного генератора статических сайтов, который хорошо работает с сетями распространения контента для повышения производительности приложения.
- Огромная экосистема готовых к использованию модулей и сторонних тем как для интерфейса, так и для интерфейса администратора.
Nuxt дает вам преимущество в создании приложений на основе Vue. Он используется на многих популярных веб-сайтах с высоким трафиком, таких как Upwork, ecosia.org, unilever.com и tiktok.com.
NodeJS
Node предоставляет асинхронную, управляемую событиями и неблокирующую среду выполнения Javascript, которая предлагает возможности для выполнения кода Javascript вне браузера на сервере. Node был создан Райаном Далем еще в 2009 году и использует двигатель V8.
Если вы не знаете, V8 — это поддерживаемая Google среда выполнения javascript с открытым исходным кодом, которая поддерживает браузер Chrome, сервер Node и многие другие приложения.
Также обратите внимание, что хотя большинство платформ, упомянутых в этой статье, используются для разработки внешнего интерфейса, Node действует как внутренний сервер.
Основные варианты использования, обслуживаемые Node.js, приведены ниже:
- Для создания веб-серверов и серверных частей приложений
- Для разработки и размещения микросервисов
- Обмен сообщениями в реальном времени, чат-боты и приложения для чата
- Сервисы потокового аудио/видео
- Бэкенд-скрипты для автоматизации повторяющихся задач
Некоторые из компаний, использующих Node, включают Netflix, NASA, Trello, Uber, Twitter, Yahoo, eBay, Groupon и Medium.
Именно благодаря Node разработчики Javascript теперь могут разрабатывать приложения полного стека только с помощью Javascript, не завися от ASP, Java, Python, Ruby on Rails и PHP.
Node также играет роль во фронтальной разработке, многие интерфейсные фреймворки, такие как Next, Nuxt, React Native и SolidJ, используют рендеринг на стороне сервера для обновления пользовательского интерфейса.
Стоит отметить, что Node годами является лидером рынка практически без конкуренции, некоторые другие конкурирующие фреймворки, такие как Deno, набирают обороты, но экосистема Node огромна. Мы не видим, чтобы Node скоро вышел из моды.
Угловой
Angular — это еще одна платформа с открытым исходным кодом, которая предоставляет возможности для разработки приложений для нескольких платформ, включая веб-приложения, нативные мобильные, настольные и гибридные приложения. В Angular пользовательские интерфейсы и интерактивность строятся с использованием простых и декларативных шаблонов.
Angular Framework поддерживается Google, и за последние несколько лет он превратился в полнофункциональную современную среду разработки интерфейса. Самая первая версия Angular называлась AngularJS (или Angular 1), но несколько лет назад она устарела. Текущая версия платформы называется Angular (не AngularJS). Angular основан на Typescript, который является расширенным набором Javascript.
Angular был выпущен в 2016 году, чтобы преодолеть недостатки AngularJS (также называемого Angular 1) и соответствовать функциям и возможностям других фреймворков, таких как React и Vue.
В то время как Angular 1 постепенно отказывался от сообщества разработчиков после появления React, последние версии Angular высоко оптимизированы для начальной загрузки приложения и мгновенного рендеринга первого представления. Другие современные функции, такие как декларативные компоненты, новая модель маршрутизатора, разделение кода и рендеринг на стороне сервера (с использованием Angular Universal), помогают angular вернуть доверие разработчиков.
Стоит отметить, что Angular стал пионером в разработке внешнего интерфейса на основе фреймворка с помощью Javascript. Angular в сочетании с Node.js изменил способ разработки веб-приложений и проложил путь к совершенно новой экосистеме вокруг JavaScript.
Кроме того, может показаться, что популярность Angular снижается, но это мощная платформа, которая по-прежнему поддерживает такие передовые приложения, как Gmail, UpWork, PayPal, Mixer, веб-сайт Forbes, и этот список очень длинный. Я твердо верю, что к концу 2022 года Angular снова вернется в тройку лучших фреймворков.
Angular имеет крутую кривую обучения по сравнению с Vue, Svelte, React и даже Vue, и по этой причине независимые разработчики, как правило, избегают Angular, учитывая все другие варианты. С другой стороны, предприятия вкладывают значительные средства в Angular и могут позволить себе начальное время для обучения и по этой причине продолжают использовать Angular.
Lit — это облегченная платформа, предоставляющая функции для создания веб-компонентов, изначально работающих в любом современном веб-браузере. Технология веб-компонентов позволяет разработчикам создавать независимые, повторно используемые и инкапсулированные пользовательские теги HTML, которые изначально работают в Интернете.
ЛИТ Фреймворк
Компоненты LIT можно использовать как простые HTML-теги, их можно использовать с другими фреймворками javascript, такими как React, выступать в качестве автономных систем дизайна пользовательского интерфейса или даже публиковать как общие компоненты в npm в виде пакетов javascript.
Важно отметить, что LIT больше похожа на библиотеку пользовательского интерфейса, чем на полнофункциональную среду Javascript. Разработчики обычно создают повторно используемые компоненты LIT и используют их вместе с другими фреймворками, такими как Angular, Vue, React и даже с простым javascript.
Несколько примечательных особенностей LIT, как показано ниже:
- Легкий, всего 5 КБ в его ядре, чтобы сохранить небольшой размер пакета и более быстрое время загрузки.
- Обеспечивает быструю визуализацию, поскольку отслеживает динамические элементы (с использованием реактивных свойств) и выборочно обновляет пользовательский интерфейс по мере изменения состояния, не полагаясь на виртуальную модель DOM.
- Позволяет разработчикам создавать реактивные и бесплатные шаблонные веб-компоненты с использованием декларативных шаблонов.
- Возможность сохранить стиль внутри компонента, чтобы избежать конфликтов с любыми другими внешними таблицами стилей.
- Доказательство будущего, поскольку он использует веб-стандарт HTMLElement, обернутый как LitElement.
О популярности LIT можно судить по тому факту, что такие организации, как IBM, Adobe, SAP, Microsoft, VMWare и Cisco среди многих других, уже используют LIT в своем внешнем стеке.
ионный
Ionic — это гибридная среда разработки приложений, которая позволяет разработчикам создавать Android, iOS, Windows, веб-приложения и прогрессивные веб-приложения из единой базы кода. Приложения Ionic создаются с использованием веб-технологий, таких как html5, css, javascript, Sass, веб-компоненты и всего остального, доступного в экосистеме javascript.
Ionic был выпущен как фреймворк с открытым исходным кодом Максом Ланчем и Беном Сперри еще в 2012 году. Ionic стал очень успешным, поскольку предоставил веб-разработчикам инструменты и методы для создания мобильных и настольных приложений с уже известными им технологиями.
Я предпочитаю называть Ionic фреймворком из фреймворков, поскольку он позволяет разработчикам использовать React, Angular и Vue для создания внешнего интерфейса приложения. Ionic core ориентирован на создание пользовательского интерфейса/взаимодействия с пользователем и позволяет легко интегрироваться со многими внутренними технологиями.
Приложения Ionic создаются с использованием компонентов, поставляемых Ionic, таких как списки, вкладки и карточки с возможностью адаптивного стиля. Адаптивный стиль автоматически отображает пользовательский интерфейс в соответствии с рекомендациями платформы, такими как Material Design для Android и Cupertino для iOS.
Приложения Ionic работают во встроенном WebView, который получает доступ к собственным функциям устройства с помощью API-интерфейсов Capacitor и Cordova. Важно отметить, что разработчики могут отображать собственные элементы управления и работать с собственными API напрямую, минуя веб-представление, но это будет означать потерю кросс-платформенных преимуществ, предоставляемых веб-представлением.
NextJS
NextJs — это фреймворк высокого уровня, созданный на основе React и предлагающий функции для ускорения разработки и производительности во время выполнения. Next дает вам преимущество, предоставляя стандартные часто используемые конфигурации и функции.
Ключевые особенности Next перечислены ниже:
- Алгоритм разделения кода и пакета для оптимизации загрузки по сети
- Создание автоматических маршрутов на основе файловой системы с использованием встроенного маршрутизатора
- Встроенная поддержка рендеринга на стороне сервера и генерации статических сайтов.
- Встроенная поддержка SASS и стиль на уровне компонентов
- Генерация конечных точек API для помощи в разработке на стороне сервера
- И список довольно длинный
Обратите внимание, что вы можете сделать все вышеперечисленное, используя React и другие пакеты, доступные в экосистеме React в целом, но обычно это занимает много времени.
На сегодняшний день сотни веб-сайтов работают на Next.js. Некоторые примеры включают в себя такие сервисы, как Hulu, портал вакансий Netflix, второй пилот Github, ATT.com, портал домашнего поиска под названием «риелтор» и многие другие.
SolidJS
Мелкозернистая реактивность — это то, что делает SolidJS хорошим выбором для создания реактивных и производительных пользовательских интерфейсов.
Как и многие другие современные фреймворки, Solid унаследовал ключевые принципы проектирования от React и работает аналогичным образом, за исключением нескольких ключевых архитектурных отличий.
Говоря о своем сходстве с React и другими современными платформами, Solid предлагает такие функции, как границы ошибок, поддержку JSX, контекст (хотя работает по-другому), порталы, прогрессивную гидратацию, потоковый рендеринг на стороне сервера, а также параллельный рендеринг.
Solid вообще пропускает виртуальный DOM и алгоритмы сравнения и работает непосредственно с реальным DOM. Solid визуализирует компоненты только один раз и обновляет только те разделы, которые зависят от изменения состояния.
Основные характеристики ниже-
- Работает над обновлением Real DOM и отказывается от концепции Virtual DOM, введенной React.
- Построен с кодированием Typescript и поддерживает его.
SolidJs был создан Райаном Карниато и впервые появился в 2018 году как фреймворк с открытым исходным кодом под лицензией MIT.
Хотя кажется, что Solid лучше, чем React, ему не хватает реагирующей экосистемы, и по этой причине его рост довольно медленный на уже насыщенном рынке фреймворков Javascript.
Какая среда JavaScript лучше для вас?
Это зависит от многих факторов, давайте рассмотрим некоторые из них -
Что вы строите?
Большинство успешных фреймворков делают по крайней мере одну вещь лучше, чем все их конкуренты, поэтому важно сопоставить ваши самые важные требования с возможностями фреймворка. Например, если вы хотите создавать многоразовые веб-компоненты, LIT будет гораздо лучшим вариантом, чем мощные React или Vue.
С другой стороны, если вы планируете создать серверную часть своего приложения, то Node.js — лучший фреймворк Javascript для вашего варианта использования. Точно так же для разработки гибридных мобильных и настольных приложений IONIC является отличным вариантом. Кроме того, такие фреймворки, как Nuxt и Next, предоставляют готовую конфигурацию для создания веб-сайтов за считанные часы.
Производительность и реактивность
Все фреймворки предлагают реактивность, но усилия, необходимые для создания реактивности и производительности пользовательского интерфейса в разных фреймворках, различаются. Например, Svelte предлагает готовые функции для создания реактивных, сложных и производительных пользовательских интерфейсов. При этом не обязательно, чтобы все приложения были реактивными. Если вы создаете простой блог или статичный веб-сайт, готовый шаблон React или Angular может оказаться более подходящим вариантом, чем создание пользовательского интерфейса с нуля. с чем-то вроде SolidJS, LIT или даже Svelte.
Существующий стек
Важно смотреть на существующий стек технологий и доступные навыки. Если вы уже запускаете большинство своих приложений на Angular, то обновить свои приложения с помощью последних улучшений Angular может быть лучше, чем полностью заменить его чем-то вроде Svelte. Другой пример: если вы используете Python Django для приложений с полным стеком, то включение компонентов LIT или постепенное добавление компонентов Vue будет намного проще, чем включение Angular или React во все это сочетание.
Простота обучения
Важно оценить свои способности к обучению в сравнении со сложностью структуры. Вы можете начать с React, но на полпути поймете, что JSX и Redux сложно освоить. Важно потратить некоторое время, поигравшись с фреймворком и посмотреть, соответствует ли он вашим возможностям и предпочтениям, прежде чем завершить его для своего проекта.
Будущие перспективы
Некоторые фреймворки похожи на мыльные пузыри, они создают ажиотаж и быстро умирают. Важно отслеживать общий рост экосистемы, корпоративную поддержку и поддержку, которую они получают от технологических гигантов. Если фреймворк не получает постоянных обновлений в соответствии с потребностями развития нового века, он обязательно устареет в ближайшем будущем.
Angular 1 — прекрасный пример, он не мог сравниться с производительностью разработчиков и производительностью во время выполнения React и теперь устарел, хотя Google представил улучшенный Angular 2, но он еще не вернулся. React, с другой стороны, постоянно пересматривает архитектуру, недавний переход React на архитектуру Fabric является хорошим примером.
Заключительные мысли
После Angular React казался фреймворком «вот и все», но затем Vue привнес нечто лучшее, затем Svelte, и последний, привлекший внимание сообщества разработчиков, носит название SolidJS.
Стремление к повышению производительности приложений и производительности разработчиков приводит к созданию новых фреймворков javascript время от времени, некоторые из них преуспевают, а некоторые отмирают, но цикл продолжается.
Кроме того, довольно удивительно видеть, как все эти фреймворки javascript помогли вывести javascript в лигу серверных технологий, таких как PHP, Django, Ruby on Rails, Java и все пространство .Net.
Надеюсь, вам понравилась статья, поделитесь ею с друзьями и коллегами.
Дополнительная литература — Параметры руководства по стилю JavaScript
Вам также может понравиться — Библиотеки графиков JavaScript
Первоначально опубликовано на https://noeticforce.com 17 марта 2022 г.