Blazor - это фреймворк одностраничных приложений (SPA), разработанный Microsoft, и он позволяет разработчикам на C # разрабатывать веб-приложения с использованием C #, HTML и CSS как для внешнего, так и для внутреннего интерфейса. Blazor новый по сравнению с другими фреймворками, такими как Angular, React, Vue и другими.
Blazor привлекает разработчиков C #, поскольку разработчики могут повторно использовать свои существующие знания о C # для создания приложений. Кроме того, Blazor имеет встроенную совместимость с JavaScript, что означает, что разработчики могут использовать существующие хорошо разработанные пакеты JavaScript в приложении Blazor.
Одним из примеров являются пакеты визуализации данных, такие как Chart.js, Apexcharts, canvasJS и другие популярные пакеты, которые разработчики могут использовать для построения диаграмм в веб-приложениях.
Давайте посмотрим, как совместить .NET Core и JavaScript. Сначала начнем с шаблона Blazor с данными прогноза погоды, и мы будем использовать эти данные для создания линейной диаграммы с помощью Apexcharts. В качестве обзора мы сделаем следующее:
- Установка
- Создание диаграмм JavaScript
- Создание диаграмм в компонентах Razor
Шаг 1: установка
Начните с установки пакетов. Самый простой способ - через CDN, где мы включаем пакеты в наше приложение. Перейдите к _Host.cshtml и включите пакеты в конце тега body.
Затем создайте один файл CSS (необязательно) и файл oneJS в корневом каталоге. Файл CSS используется для определения стиля для наших линейных диаграмм, а файл JS - для наших библиотек JavaScript. Включите файл CSS в тег Head _Host.cshtml и JavaScript в конце тела.
Вот мой фрагмент кода.
Шаг 2. Создание диаграмм на JavaScript
Хорошо, мы закончили установку. Перейдем к нашему JavaScript. В этом примере я использую образец из Apexchart для линейных диаграмм, чтобы нанести указанную выше температуру на линейную диаграмму. См. Пример кода здесь: https://apexcharts.com/javascript-chart-demos/line-charts/data-labels/
Вы можете обратиться к различным параметрам, задокументированным в Apexcharts, для вашей визуализации. Вот пример с двумя параметрами - value и label, а имя моей функции - generateLineChart.
Вот мой фрагмент файла chart.js:
Шаг 3. Создайте диаграммы в компонентах Razor
Отлично, это все, что нам нужно для JavaScript. Теперь мы можем перейти на нашу страницу Razor. Для простоты я буду повторно использовать FetchData.razor. Нам потребуется сделать три действия:
- Ввести IJSRuntime
- Методы C # для вызова JSRuntime
- Создать элемент HTML
[1] Ввести IJSRuntime
Это просто. Просто добавьте вверху @inject IJSRuntime jsRuntime. Это позволит нам вызывать JavaScript из метода .NET. Мы будем использовать это для вызова функций диаграммы, которые мы создали выше. Более подробную информацию можно найти здесь: https://docs.microsoft.com/en-us/aspnet/core/blazor/call-javascript-from-dotnet?view=aspnetcore-3.1
[2] Методы C # для вызова JSRuntime
Обычно у нас есть методы для получения данных из асинхронного метода или через REST API. В этом примере мы получаем данные из GetForecastAsync с помощью метода «OnInitializedAsync».
В этом случае мы не должны включать рендеринг в этот метод, поскольку наша библиотека JavaScript еще не инициализирована и не будет отображать наши диаграммы в этом методе. Вместо этого мы должны использовать «OnAfterRenderAsync». Это следует за жизненным циклом Blazor, где сначала мы компилируем HTML, а затем инициализируем нашу библиотеку JavaScript.
В качестве примера я использовал LINQ для генерации параметров моего JavaScript и их синтаксического анализа в IJSRuntime.
protected override async Task OnAfterRenderAsync(bool firstRender) { if(firstRender) { var value = forecasts.Select(v => v.TemperatureC); var label = forecasts.Select(l => l.Date.ToShortDateString()); await jsRuntime.InvokeVoidAsync("generateLineChart", value, label); this.StateHasChanged(); } }
[3] Создать элемент HTML
Наконец, просто включите HTML-тег для нашей диаграммы с соответствующим HTML-идентификатором.
<div id="chart"></div>
Вот и все! Вот полный фрагмент кода для моего «FetchData.razor».
Вот и все! С помощью нескольких простых шагов мы можем использовать популярные библиотеки JavaScript для визуализации данных для создания приложения панели управления в Blazor.
Удачного кодирования!
Обязательно подумайте о подписке на Среднее членство, если вы открыли для себя новые идеи в Medium!
Приложение
Blazor IJSRuntime: https://docs.microsoft.com/en-us/aspnet/core/blazor/call-javascript-from-dotnet?view=aspnetcore-3.1
Жизненный цикл Blazor: https://docs.microsoft.com/en-us/aspnet/core/blazor/lifecycle?view=aspnetcore-3.1