Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 501новая вакансия за сутки·57 707вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 678
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 400 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python11 001
  • Облачные технологии7 882
  • QA вакансии2 530
  • Android1 457
  • Инженер данных929
  • Продакт-менеджер312

Разработка

  • iOS1 361
  • Backend вакансии1 335
  • AI вакансии645
  • Fullstack вакансии521
  • Frontend вакансии460
  • Mobile вакансии28

По стеку

  • Go6 500
  • Java3 643
  • Node.js1 203
  • Kotlin1 161
  • Rust1 155
  • .NET787
  • PHP334
  • C++285
  • C#211

DevOps и инфраструктура

  • Kubernetes4 701
  • Linux-инфраструктура3 588
  • DevOps вакансии3 059
  • Terraform / IaC2 617
  • Мониторинг и Observability1 284
  • CI/CD929
  • SRE345
  • Кибербезопасность28

Аналитика и данные

  • Аналитик данных556
  • Data Scientist443
  • Бизнес-аналитик412
  • Системный аналитик71

Другие направления

  • Проджект-менеджер91
  • UI/UX дизайн72
  • Ручное тестирование14

По регионам

  • Вакансии в США28 307
  • Вакансии в Европе10 602
  • Работа в России3 671
  • Вакансии в Канаде2 400

По формату

  • Удалённые вакансии44 927
  • Релокация в США28 307
  • Гибридная работа6 438
  • Офисная работа4 602

По уровню

  • Senior вакансии22 956
  • Middle вакансии11 692
  • Junior вакансии3 903

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify36 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме BlazorВсе вопросы
BlazorJuniorКодинг

Что такое компонент Blazor и как он структурирован в файле .razor?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Компонент Blazor — это файл .razor, компилируемый в C#-класс. Он состоит из директив (@page, @inject), HTML-шаблона с Razor-выражениями и блока @code с логикой. Параметры объявляются через атрибут [Parameter] на публичных свойствах.

Минимальный пример

@* Counter.razor *@
@page "/counter"

<h1>Счётчик: @_count</h1>
<button @onclick="Increment">+1</button>

@code {
    private int _count = 0;

    private void Increment() => _count++;
}

Что такое компонент Blazor

Компонент Blazor — это самодостаточная единица UI, описанная в файле с расширением .razor. При компиляции Roslyn превращает его в C#-класс, наследующий Microsoft.AspNetCore.Components.ComponentBase. Компоненты переиспользуются, принимают параметры, хранят локальное состояние и реагируют на события.

Структура файла .razor

Файл .razor состоит из трёх необязательных секций, которые могут идти в любом порядке, но соглашение — сверху вниз:

  • Директивы — строки, начинающиеся с @: @page, @inject, @using, @inherits, @implements.
  • HTML-разметка с Razor-выражениями — шаблон компонента.
  • Блок @code { ... } — C#-поля, свойства, методы, обработчики событий.

Параметры компонента

Публичные свойства, помеченные [Parameter], становятся атрибутами при использовании компонента:

@* Greeting.razor *@
<p>Привет, @Name!</p>

@code {
    [Parameter] public string Name { get; set; } = "World";

    // Для событий наружу
    [Parameter] public EventCallback<string> OnGreeted { get; set; }
}

Использование в родителе:

<Greeting Name="Blazor" OnGreeted="HandleGreet" />

RenderFragment — слоты для контента

@* Card.razor *@
<div class="card">
  <div class="card-header">@Title</div>
  <div class="card-body">@ChildContent</div>
</div>

@code {
    [Parameter] public string Title { get; set; } = "";
    [Parameter] public RenderFragment? ChildContent { get; set; }
}
<Card Title="Моя карточка">
  <p>Произвольный HTML внутри</p>
</Card>

Разделение на partial class

Логику можно вынести в файл Counter.razor.cs — он автоматически становится частичным классом того же компонента:

// Counter.razor.cs
namespace MyApp.Pages;

public partial class Counter
{
    private int _count = 0;
    private void Increment() => _count++;
}

Файл .razor при этом содержит только разметку, без @code.

Инъекция зависимостей

@inject HttpClient Http
@inject ILogger<Counter> Logger

В partial class аналог: атрибут [Inject] на свойстве.

Подводные камни

  • Имя файла = имя класса: Blazor выводит имя компонента из имени файла. Если файл называется my-counter.razor, компонент не скомпилируется — используйте PascalCase.
  • [Parameter] должен быть public set: свойство с private set или только геттером не биндится и не вызывает ошибку компиляции, а просто молча игнорируется.
  • Мутация параметра внутри компонента: изменение параметра напрямую нарушает однонаправленный поток данных; используйте EventCallback для уведомления родителя.
  • @page без leading slash: маршрут @page "counter" (без /) не будет работать — Blazor требует абсолютный путь.
  • ChildContent и именованные слоты: нельзя иметь и ChildContent, и другие RenderFragment-параметры без явного тега внутри — компилятор не поймёт, куда класть контент.
  • Нет async в блоке @code напрямую: конструкция @code { await ... } вне метода не компилируется — весь async-код должен быть внутри методов.

Частые вопросы на собеседовании

  • В чём разница между Blazor Server и Blazor WebAssembly?
  • Что такое Blazor и каковы его основные модели хостинга?
  • Как Blazor управляет повторным рендерингом компонентов и как его оптимизировать?
  • В каких типах frontend-проектов Blazor даёт реальный выигрыш, а где будет избыточен или неудачен?

Типичные ошибки

  • Путать структура Razor-компонента и связка markup/code с похожим механизмом из другой версии или платформы.
  • Игнорировать runtime-границы Blazor: lifecycle, DI scope, SQL translation, UI thread или platform API.
  • Не обсуждать null/empty/error cases и поведение под нагрузкой.

Что проверяет интервьюер

  • Кандидат объясняет структура Razor-компонента и связка markup/code на конкретном примере, а не только определением.
  • Указывает последствия для производительности, тестируемости и поддержки.
  • Различает документированное поведение текущего стека и устаревшие практики.

Как вы знаете этот вопрос?

Проверить себя по теме Blazor →

Источники

  • https://learn.microsoft.com/en-us/aspnet/core/blazor/components/
←Предыдущий вопросКак обрабатывать формы и валидацию в Blazor с помощью `EditForm`?Следующий вопрос→Как передавать данные из дочернего компонента обратно в родительский?

Связанные темы

Blazorimplementationruntime-reasoning