Внедрение зависимостей (Dependency Injection, DI) — это набор принципов и паттернов проектирования программных продуктов, позволяющий разрабатывать слабосвязанный код. Dependency Injection в ASP.NET Core и Blazor, в частности — это основной способ расширения возможностей приложения. Вместе с тем, так как приложения Blazor Hybrid направлены на разработку кроссплатформенных приложений, то здесь использование DI имеет свои особенности, которые мы и рассмотрим в этой части. Но начнем всё же с наиболее общих моментов использования DI в приложении Blazor.
Blazor Hybrid
Изменение маршрутизации по умолчанию в приложении Blazor Hybrid
Все ссылки, используемые в приложении Blazor Hybrid делятся на внутренние и внешние. В зависимости от того, какой вид ссылки обрабатывается выполняются действия по умолчанию, которые мы, при необходимости, можем изменить.
Навигация в приложениях Blazor Hybrid
При разработке приложения Blazor Hybrid возможна ситуация, при которой вам потребуется осуществит переход по заданному пути непосредственно в коде C#. Для навигации в приложении непосредственно из кода C# используется экземпляр класса NavigationManager.
Передача данных через строку запроса
Для передачи данных в компонент Razor с использованием URL необязательно использовать параметры в шаблоне маршрута — для передачи некоторых типов данных мы можем задействовать строку запроса.
Маршрутизация в приложениях Blazor Hybrid
Маршрутизация в Blazor — это процесс сопоставление запроса с конкретным адресом внутри приложения. За выполнение маршрутизации к компонентам Razor в приложении Blazor Hybrid отвечает специальный компонент Router, который, в свою очередь, размещается в компоненте Components/Routes.razor.
Поддержка разделяемых классов в компонентах Razor
В Blazor поддерживаются разделяемые (частичные, partial) классы. Такие классы удобно использовать при создании компонентов Razor.
Шаблонные компоненты Razor
Шаблонные компоненты — это компоненты, которые получают один или несколько шаблонов пользовательского интерфейса в качестве параметров, которые могут использоваться в логике рендеринга компонента.
Виртуализация компонентов Razor
Виртуализация — это метод ограничения рендеринга пользовательского интерфейса только теми частями, которые видны в данный момент времени. Довольно часто, в приложениях обрабатываются большие массивы данных, которые могут отображаться в виде каких-либо компонентов Razor. Например, ваше приложение может выгружать из базы данных тысячи записей о покупках пользователей и отображать эти записи в виде красивых карточек. В данном случае, для повышения производительности вашего приложения вам пригодится виртуализация.
Динамические компоненты Razor (DynamicComponent)
Динамические компоненты Razor удобно использовать в том случае, когда мы заранее не знаем как будет строится пользовательский интерфейс. Например, наше приложение может использовать систему виджетов и пользователь сам определяет какие виджеты необходимо вывести на главной странице. В этом случае нам потребуется обеспечить динамическое создание компонентов.
Жизненный цикл компонента Razor
Все компоненты Razor, с которыми мы работали ранее, наследуются от базового абстрактного класса Component. У этого класса определены методы, благодаря которым мы можем управлять жизненным циклом компонента Razor.