[Перевод] Сравнение Blazor и JavaScript-инструментов

В последние несколько лет JavaScript был самым популярным и распространённым языком для разработки одностраничных приложений (Single Page Application, SPA). Это так и сегодня. Но недавно Microsoft выпустила новый фреймворк, который называется Blazor. Он позволяет писать браузерные приложения на C#.

pg5w4vjjrv-ggtn7fsdt1qrbkng.jpeg

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

Что такое Blazor?


Blazor (Browser+Razor) — это новый веб-фреймворк, выпущенный Microsoft. Он позволяет создавать браузерные приложения, используя, помимо HTML и CSS, язык C# и синтаксис Razor.

Ранее тот, кто пользовался Razor, должен был запускать представления (view) Razor на сервере, формируя таким образом HTML-код, который мог быть выведен браузером. Теперь же представления Razor можно выполнять на стороне клиента.

Так как Blazor использует WebAssembly, нам не нужно устанавливать в браузер никаких сторонних плагинов или аддонов для выполнения соответствующего кода. В результате оказывается, что используя Blazor можно создавать клиентские и серверные части приложения на C#. Возможность совместного использования кода и библиотек на клиенте и на сервере значительно облегчает жизнь разработчика.

Вот пример кода, используемого в Blazor.

fe689accfec5141e491e5364abc63dcc.png


Код, используемый в Blazor

Почему вокруг Blazor поднято так много шума?


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

Как я уже говорил, главная сильная сторона Blazor — это возможность разработки браузерных приложений на C#. В последние годы JavaScript (или TypeScript) был основным языком разработки клиентских частей веб-приложений. То есть, если некто является .NET-программистом, ему, чтобы разрабатывать фуллстек-приложения для веба, необходимо было изучить JavaScript. А с использованием Blazor и клиентские и серверные части веб-приложений можно писать на C#. Лично для меня это — главная сильная сторона Blazor.

Код, написанный для Blazor, в отличие от JavaScript-кода, перед попаданием в браузер предварительно компилируется в промежуточный формат. Эта особенность даёт нам некоторые замечательные возможности при разработке браузерных приложений, требовательных к производительности. И, кроме того, Blazor-приложения подходят для решения ресурсоёмких задач на клиенте. Например — для создания PDF-файлов или для обеспечения работы игровых алгоритмов.

Но, помимо вышеперечисленного, у Blazor есть и другие интересные возможности:

  • Для обеспечения работы Blazor не нужны браузерные плагины.
  • При разработке для Blazor можно выполнять полноценную отладку .NET-кода.
  • Фреймворк использует новейшие возможности браузеров.
  • Blazor поддерживает удобную модель разработки интерфейсов.
  • Фреймворк отличается хорошей браузерной поддержкой.
  • Blazor поддерживает механизм внедрения зависимостей.
  • Использование Blazor позволяет организовать совместное использование кода между клиентскими и серверными частями приложений.


Сравнение JavaScript-инструментов и Blazor


А теперь мы добрались до самой главной части этой статьи. Поищем ответ на вопрос о том, сможет ли Blazor стать заменой для библиотек и фреймворков, написанных на JavaScript. Сможет ли JavaScript удержать занятые им позиции? Пожалуй, любой, кто интересуется современным состоянием фронтенд-разработки, хотел бы знать ответы на эти вопросы. Полагаю, что пока слишком рано делать окончательные выводы, или даже строить некие предположения на этот счёт. Но мы, чтобы приблизиться к истине, можем сравнить с Blazor несколько ведущих JavaScript-библиотек и фреймворков.

▍Сравнение Blazor и React


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

Экосистема React полна библиотек и фреймворков, которые облегчают процесс разработки оптимизированных React-приложений. Эти библиотеки и фреймворки делают React «универсальным языком», используя который, можно создавать приложения для веба, для командной строки, для iOS и Android, для настольных систем.

Blazor, в сравнении с React, это явление достаточно новое. Но не стоит забывать о том, что за Blazor стоит серьёзная система Razor. Поэтому мы не можем говорить о том, что Blazor — это нечто, совершенно неизвестное программистам. Кроме этого, так как Blazor использует C#, это облегчает и ускоряет освоение данного фреймворка .NET-разработчиками. Хотя React, улучшаясь со временем, даёт разработчикам множество возможностей, и хотя у React есть масса сильных сторон, в Blazor, несмотря на совсем небольшой возраст этого фреймворка, тоже есть кое-что примечательное:

  • Blazor-проекты, как и проекты, основанные на React, можно разворачивать в виде статических файлов.
  • В Blazor-приложениях можно использовать пакеты NuGet.
  • При применении Blazor на клиенте и на сервере можно использовать один и тот же код (это, конечно, справедливо и при использовании JS/TS).
  • В Blazor есть встроенные механизмы для маршрутизации, для проверки данных, введённых пользователем, для обработки форм.


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

▍Сравнение Blazor и Angular


JavaScript-фреймворк Angular тоже популярен в деле разработки одностраничных приложений. Если сравнить его с библиотекой React, то окажется, что он включает в себя больше стандартных возможностей. Angular предоставляет разработчику клиентских приложений архитектуру MVC, что позволяет упростить процессы создания и тестирования проектов. Если же сравнить Angular и Blazor, то окажется, что Angular занимает прочное место во фронтенд-разработке, как хорошо известный и стабильный фреймворк, пригодный для создания реальных приложений. Кроме того, Angular полностью поддерживает прогрессивные веб-приложения, в то время как серверные механизмы Blazor ещё должны развиться в этом направлении. Более того, так как в Angular используется TypeScript, этот фреймворк ближе и понятнее для C#-программистов, чем фреймворки и библиотеки, основанные на JavaScript. Учитывая все сильные стороны Angular, я не вижу причин для того, чтобы кто-то, хорошо знающий TypeScript, решил бы выбрать Blazor.

Итоги


Blazor — это, безусловно, интересный проект, который, несмотря на то, что появился он сравнительно недавно, заслуживает определённого внимания. А вопрос о том, способен ли он заменить JavaScript-инструменты в деле разработки фронтенда, пока остаётся открытым.

Пробовали ли вы Blazor?

oug5kh6sjydt9llengsiebnp40w.png

© Habrahabr.ru