В этой серии статей я буду постепенно разрабатывать приложение Blazor WebAssembly под названием «Open Ecology». Это приложение будет предоставлять нам информацию из открытых источников о загрязнении окружающей среды в тех или иных районах нашей необъятной Родины. Весь процесс разработки я буду описывать здесь от «А» до «Я». Для работы над проектом нам потребуются все полученные ранее знания как по языку C# в общем, так и по работе с Blazor в частности. Разработка будет вестись в Visual Studio 2022 с использованием .NET 6.0
Создаем проект
Запускаем Visual Studio 2022 и выбираем пункт «Create a new project» («Создать новый проект»)
Выбираем проект «Blazor WebAssembly App»
Задаем название проекта и его расположение на жестком диске:
В дополнительной информации о проекте отметим следующие пункты:
В дальнейшем, если нам потребуется включить авторизацию пользователей, мы это сделаем, а пока нам будет достаточно выбранных настроек проекта. Жмем «Create» и получаем новый шаблонный проект Blazor WebAssembly. Про то, что входит в состав проекта, можно прочитать здесь.
Меняем главный макет приложения
В большинстве случаев, когда мы слышим слова «Экология», «окружающая среда» и прочие, то сразу представляется, что-то зеленоё 🙂 Стандартный макет Blazor хоть и хорош, но к теме экологии он мало имеет отношения:
Для начала попробуем изменить внешний вид бокового меню. Blazor поддерживает раздельное указание CSS для различных частей приложения. Например, для компонента главного меню (NavMenu.blazor) файл CSS называется NavMenu.blazor.css и его можно увидеть в списке файлов проекта:
Аналогичный файл CSS мы можем найти и для компонента главного макета приложения MainLayout.razor. Посмотрим, что из себя представляет главный макет приложения с точки зрения его визуальной части:
@inherits LayoutComponentBase
<div class="page">
<div class="sidebar">
<NavMenu />
</div>
<main>
<div class="top-row px-4">
<a href="https://docs.microsoft.com/aspnet/" target="_blank">About</a>
</div>
<article class="content px-4">
@Body
</article>
</main>
</div>
Как можно видеть, компонент NavMenu выводится внутри <div> у которого установлен класс sidebar. В этом элементе css и применяется градиентная заливка сайдбара нашего приложения. Открываем файл MainLayout.razor.css и находим в нем необходимый нам элемент:
.sidebar {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}
Попробуем поменять цвета следующим образом:
.sidebar {
background-image: linear-gradient(180deg, rgb(5, 149, 39) 0%, #006400 70%);
}
Теперь запустим приложение и убедимся. что цветовая палитра нашего приложения теперь более соответствует теме «Экология»
Далее, поменяем верхнее меню, а именно ссылку «About». По умолчанию эта ссылка ведет нас на сайт Microsoft. Создадим новую страницу, которая будет открываться при переходе по ссылке «About».
Делаем страницу с описанием проекта
Так как страница с описанием проекта будет доступна из любой части приложения, то разместим её в папке «Shared». Жмем на папке правой кнопкой мыши и выбираем «Добавить —> Компонент Razor»
Назовем наш компонент «About.razor»
Пишем следующий код компонента:
@page "/about"
<h3>О проекте</h3>
<p>Проект "Open ecology" использует открытые официальные данные о воздействии на окружающую среду промышленности</p>
<p>Для разработки проекта используются:</p>
<ul>
<li>NET 6.0</li>
<li>Фремворк Blazor</li>
<li>Фремворк Bootstrap</li>
</ul>
@code {
}
Теперь можно запустить приложение и перейти по адресу http://localhost:[port]/about и посмотреть на результат:
Теперь вернемся в главный макет приложения (MainLayout.razor) и изменим код ссылки «About»:
@inherits LayoutComponentBase
<div class="page">
<--Код сокращен-->
<main>
<div class="top-row px-4">
<a href="/about">О проекте</a>
</div>
<--Код сокращен-->
</main>
</div>
Теперь наша ссылка будет выглядеть следующим образом:
а клик по ссылке будет открывать нашу страничку «About».
Итого
Сейчас мы подготовили шаблон приложения Blazor WebAssembly для дальнейшей работы: настроили стиль сайдбара и добавили страницу описания проекта. В следующей части мы напишем свой сервис по загрузке данных из JSON и отображении полученных данных на отдельной странице приложения.









