Blazor с нуля: руководство по созданию современных веб-приложений на C#

freeCodeCamp.org 149 тыс. 1 ч 21 мин 4 мин 18.07.2024
Главное

Материал подготовлен на основе обучающего курса Алана Омари (канал freeCodeCamp.org). В статье детально разобраны основы архитектуры Blazor, работа с компонентами, режимы рендеринга и создание полноценного CRUD-приложения на базе .NET 8.

🏗️ Что такое Blazor и как устроена его архитектура 0:00

Blazor — это современный фронтенд-фреймворк, входящий в состав платформы .NET, который позволяет создавать интерактивные веб-интерфейсы, используя C# вместо JavaScript . Основная идея технологии заключается в использовании единого стека разработки (HTML, CSS и C#) как для клиентской, так и для серверной части приложения. Это позволяет разработчикам обмениваться кодом общей логики между сервером и клиентом .

Ключевой особенностью Blazor является его компонентная архитектура. Компонент в Blazor — это многоразовый элемент пользовательского интерфейса (UI), который инкапсулирует в себе разметку и логику обработки событий . Важно отметить, что сфера применения фреймворка не ограничивается только вебом: благодаря подходу Blazor Hybrid можно создавать нативные мобильные и десктопные приложения, смешивая веб-технологии и нативные возможности платформ .

Разбор структуры проекта в .NET 8

При создании проекта с использованием шаблона «Blazor Web App» формируется стандартная иерархия файлов :

🧩 Компоненты и обработка событий 10:09

Файлы компонентов имеют расширение .razor и представляют собой смесь HTML и C#. Синтаксис Razor позволяет внедрять логику рендеринга (условия, циклы) непосредственно в разметку .

Параметры и жизненный цикл

Для передачи данных в компонент используются параметры. Чтобы объявить параметр, необходимо создать публичное свойство в блоке @code и пометить его атрибутом [Parameter] . Например, в учебном примере счетчик (Counter) принимает параметр IncrementAmount, определяющий шаг увеличения значения при нажатии кнопки .

Обработка событий пользовательского интерфейса

Интерфейсные события (клики, ввод текста, наведение мыши) привязываются к элементам с помощью специальных атрибутов. Алан Омари выделяет несколько типов событий:

  1. События клика (@onclick): наиболее распространенный триггер, вызывающий метод C# для изменения состояния приложения .
  2. События ввода (@oninput): срабатывают мгновенно при наборе текста в поле. В обработчик передается аргумент ChangeEventArgs, через который можно получить текущее значение поля ввода .
  3. События мыши (@onmouseover): позволяют реагировать на наведение курсора на элементы .
  4. События фокуса (@onfocus, @onblur): фиксируют моменты, когда пользователь заходит в поле ввода или покидает его .

🔗 Привязка данных (Data Binding) 31:30

Data Binding позволяет синхронизировать состояние компонентов с источниками данных.

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

🔄 Режимы рендеринга в Blazor 38:20

Одним из самых важных аспектов Blazor является гибкость настройки того, где именно исполняется код.

🛠️ Создание CRUD-приложения со Scaffold 55:09

Для демонстрации сложных операций Алан Омари создает приложение для управления списком студентов, используя Entity Framework (EF) Core и SQL Server .

Шаги разработки:

  1. Создание модели: определяется класс Student с полями ID, Name, Age и Birthday .
  2. Scaffolding: Visual Studio позволяет автоматически сгенерировать страницы для создания, чтения, обновления и удаления (CRUD) записей на основе модели данных и контекста базы данных (DbContext) .
  3. Миграции: с помощью команд Add-Migration и Update-Database в консоли диспетчера пакетов NuGet структура из C#-кода переносится в физическую базу данных SQL Server .
  4. Работа с данными в UI:
    • QuickGrid: встроенный компонент Blazor для отображения табличных данных с поддержкой сортировки и пагинации .
    • EditForm: специальный компонент для работы с формами, который автоматически связывает поля ввода с объектом модели .
    • Валидация: использование атрибутов данных (Data Annotations) в модели, таких как [Required] или [Range], позволяет автоматически проверять корректность ввода и выводить сообщения об ошибках .

Для получения мгновенной валидации («на лету») при выходе из поля ввода, Алан рекомендует включать интерактивный режим рендеринга (@rendermode InteractiveServer) для страниц заполнения форм .

💬 Цитаты

«Blazor — это современный фронтенд-веб-фреймворк, часть платформы .NET, основанный на HTML, CSS и C#.»

Алан Омари 01:03

«Ключевой особенностью Blazor является его компонентная архитектура.»

Алан Омари 01:16

«Interactive Auto режим — страницы загружаются быстрее изначально, так как рендерятся с сервера, но затем нагрузка полностью переносится на клиента.»

Алан Омари 44:36
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Scaffolding
Метод автоматической генерации заготовок кода (контроллеров, представлений) на основе моделей данных.
WebAssembly (WASM)
Формат инструкций, позволяющий исполнять бинарный код в браузере с околонативной скоростью.
Razor
Синтаксис разметки, объединяющий HTML-код и логику на языке C#.
CRUD
Аббревиатура четырех базовых операций с данными: Create (создание), Read (чтение), Update (обновление), Delete (удаление).
📊 Цифры
⚖️ Другая сторона
Технологии и IT Blazor C# Entity Framework WebAssembly .NET 8