Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Esta não é a versão mais recente deste artigo. Para ver a versão atual, consulte a versão .NET 10 deste artigo.
Aviso
Esta versão do ASP.NET Core não tem mais suporte. Para obter mais informações, consulte o .NET e .NET Core Support Policy. Para ver a versão atual, consulte a versão .NET 10 deste artigo.
Artigos de conceitos básicos fornecem diretrizes sobre conceitos fundamentais de Blazor. Alguns dos conceitos estão conectados a uma compreensão básica dos componentes Razor, que são descritos com mais detalhes na próxima seção deste artigo e abordados detalhadamente nos artigos de Componentes.
Conceitos de renderização estática e interativa
Razor componentes são renderizados estaticamente ou interativamente.
Static ou static rendering é um cenário do lado do servidor que significa que o componente é renderizado sem a capacidade de interação entre o usuário e o código .NET/C#. Os eventos DOM do JavaScript e HTML permanecem não afetados, mas nenhum evento de usuário no cliente pode ser processado com .NET em execução no servidor.
Interactive/interactivity ou interactive rendering significa que o componente tem a capacidade de processar eventos .NET e associação por meio do código C#. Os eventos .NET e a associação são processados no servidor pelo runtime do ASP.NET Core ou no navegador do cliente pelo runtime Blazor baseado em WebAssembly.
Importante
Ao usar um Blazor Web App, a maioria dos componentes de exemplo de documentação do Blazorrequerem interatividade para funcionar e demonstrar os conceitos abordados pelos artigos. Ao testar um componente de exemplo fornecido por um artigo em um Blazor Web App, verifique se o aplicativo adota interatividade global ou se o componente adota um modo de renderização interativo. Mais informações sobre esse assunto são fornecidas por ASP.NET Core Blazor modos de renderização na seção Components, que aparece posteriormente no conjunto de documentação Blazor.
Mais informações sobre esses conceitos e como controlar a renderização estática e interativa são encontradas nos modos de renderização ASP.NET Core Blazor mais adiante na documentação Blazor.
Conceitos de renderização de cliente e servidor
Ao longo da documentação Blazor, diz-se que a atividade que ocorre no sistema do usuário ocorre no cliente ou lado do cliente. Diz-se que a atividade que ocorre em um servidor ocorre no servidor ou lado do servidor.
O termo renderização significa produzir o código HTML que os navegadores exibem.
Client-side rendering (CSR) significa que a marcação HTML final é gerada pelo runtime .NET WebAssembly no cliente. Nenhum HTML para a interface do usuário gerada pelo cliente do aplicativo é enviado de um servidor para o cliente para esse tipo de renderização. A interatividade do usuário com a página é presumida. Não existe o conceito de renderização estática do lado do cliente. Presume-se que a CSR seja interativa, portanto, a "renderização do lado do clienteinterativa" e a "CSR interativa" não são usadas pelo setor ou pela documentação Blazor.
Server-side rendering (SSR) significa que a marcação HTML final é gerada pelo runtime ASP.NET Core no servidor. O HTML é enviado ao cliente através de uma rede para exibição pelo navegador do cliente. Nenhum HTML para a interface do usuário gerada pelo servidor do aplicativo é criado pelo cliente para esse tipo de renderização. O SSR pode ser de duas variedades:
- SSR estática: o servidor produz HTML estático que não fornece interatividade do usuário nem mantém o estado do componente Razor.
- SSR interativa: os eventos Blazor permitem a interatividade do usuário e o estado do componente Razor é mantido pela estrutura Blazor.
A pré-renderização é o processo de renderizar inicialmente o conteúdo da página no servidor sem habilitar manipuladores de eventos para controles renderizados. O servidor gera a interface HTML da página o mais rápido possível em resposta à solicitação inicial, o que faz o aplicativo parecer mais responsivo para os usuários. A pré-renderização também pode melhorar a SEO (Otimização para Motores de Busca) ao renderizar conteúdo na resposta HTTP inicial que os mecanismos de pesquisa usam para calcular o ranking da página. A pré-renderização é sempre seguida pela renderização final, seja no servidor ou no cliente.
Componentes Razor
Aplicativos Blazor são baseados em componentes Razor, geralmente chamados apenas de componentes. Um componente é um elemento da interface do usuário, como uma página, uma caixa de diálogo ou um formulário de entrada de dados. Os componentes são .NET classes C# integradas a assemblies .NET.
Razor refere-se a como os componentes geralmente são escritos na forma de uma página de marcação Razor para lógica e composição da interface do usuário do lado do cliente. O Razor é uma sintaxe para a combinação de marcação HTML com o código C# projetada para melhorar a produtividade do desenvolvedor. Arquivos Razor usam a extensão de arquivo .razor.
Embora alguns desenvolvedores de Blazor e recursos online usem o termo "componentes Blazor", a documentação evita esse termo e usa universalmente "componentes Razor" ou "componentes".
A documentação do Blazor adota várias convenções para mostrar e discutir componentes:
- Em geral, os exemplos aderem às convenções de codificação ASP.NET Core/C# e às diretrizes de engenharia. Para mais informações, consulte os seguintes recursos:
- Código do projeto, caminhos de arquivo e nomes, nomes de modelo do projeto e outros termos especializados estão em inglês dos Estados Unidos e geralmente cercados por código.
- Os componentes geralmente são referenciados pelo nome da classe C# (Pascal case) seguido pela palavra "componente". Por exemplo, um componente de upload de arquivo típico é chamado de "componente
FileUpload". - Normalmente, o nome da classe C# de um componente é o mesmo que seu nome de arquivo.
- Os componentes roteáveis geralmente definem suas URLs relativas como o nome da classe do componente em kebab case. Por exemplo, um componente
FileUploadinclui a configuração de roteamento para alcançar o componente renderizado na URL relativa/file-upload. O roteamento e a navegação são abordados em ASP.NET Core Blazor roteamento. - Quando várias versões de um componente são usadas, elas são numeradas sequencialmente. Por exemplo, o componente
FileUpload3é alcançado em/file-upload-3. -
Razor diretivas na parte superior de uma definição de componente (
.razor file) são colocadas na seguinte ordem:@page,@rendermode(.NET 8 ou posterior), instruções@using, outras diretivas em ordem alfabética. - Embora não sejam necessários para membros
private, os modificadores de acesso são usados em exemplos de artigos e aplicativos de amostra. Por exemplo,privateé declarado para declarar um campo chamadomaxAllowedFilescomoprivate int maxAllowedFiles = 3;. - Os valores do parâmetro do componentelevam a um Razor símbolo
@reservado, mas isso não é necessário. Literais (por exemplo, valores boolianos), palavras-chave (por exemplo,this) enullcomo valores de parâmetro do componente não são prefixados com@, mas isso também é apenas uma convenção de documentação. Seu próprio código pode prefixar literais com@, se você quiser. - As classes em C# usam a palavra-chave
thise evitam prefixar com um sublinhado (_) os campos que são atribuídos em construtores, o que difere das diretrizes de engenharia do framework ASP.NET Core. - Em exemplos que usam construtores primários (C# 12 ou mais recente), os parâmetros do construtor primário normalmente são usados diretamente pelos membros da classe. Nos exemplos de artigo, as linhas de código são divididas para reduzir a rolagem horizontal. Essas quebras não afetam a execução e podem ser removidas ao serem coladas no seu projeto.
Informações adicionais sobre a sintaxe do componente Razor são fornecidas na seção Razor sintaxe de componentes ASP.NET Core Razor.
Veja a seguir um exemplo de componente de contador que faz parte de um aplicativo criado a partir de um modelo de projeto Blazor. A cobertura de componentes detalhada é encontrada nos artigos de Componentes posteriormente na documentação. O exemplo a seguir demonstra os conceitos de componente vistos nos artigos de Conceitos básicos antes de chegar aos artigos de Componentes posteriormente na documentação.
Counter.razor:
O componente pressupõe que um modo de renderização interativo seja herdado de um componente pai ou aplicado globalmente ao aplicativo.
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount() => currentCount++;
}
O componente pressupõe que um modo de renderização interativo seja herdado de um componente pai ou aplicado globalmente ao aplicativo.
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount() => currentCount++;
}
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
@page "/counter"
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
O componente Counter anterior:
- Define sua rota com a diretiva
@pagena primeira linha. - Define o título e o cabeçalho da página.
- Renderiza a contagem atual com
@currentCount.currentCounté uma variável inteira definida no código C# do bloco@code. - Exibe um botão para disparar o método
IncrementCount, que também é encontrado no bloco@codee aumenta o valor da variávelcurrentCount.
Modos de renderização
Os artigos no nó Fundamentos fazem referência ao conceito de modos de renderização. Este assunto é abordado detalhadamente no artigo de modos de renderização do ASP.NET Core Blazor no nó Components, que aparece após o nó de artigos Fundamentals.
Para que as primeiras referências neste nó de artigos forneçam conceitos de modo, basta observar o seguinte neste momento:
Cada componente em um Blazor Web App adota um modo de renderização para determinar o modelo de hospedagem que ele usa, onde é renderizado, e se é ou não renderizado estaticamente no servidor, renderizado com interatividade do usuário no servidor ou renderizado para interatividade do usuário no cliente (geralmente com pré-renderização no servidor).
Blazor Server e Blazor WebAssembly aplicativos para versões ASP.NET Core anteriores a .NET 8 permanecem concentrados nos conceitos do modelo de hospedagem, não nos modos de renderização. Os modos de renderização são aplicados conceitualmente a Blazor Web Apps no .NET 8 ou posterior.
A tabela a seguir mostra os modos de renderização disponíveis para a renderização de componentes do Razor em um Blazor Web App. Os modos de renderização são aplicados a componentes com a diretiva @rendermode na instância do componente ou na definição do componente. Também é possível definir um modo de renderização para todo o aplicativo.
| Nome | Descrição | Local de renderização | Interativo |
|---|---|---|---|
| Servidor estático | Renderização estática do lado do servidor (SSR estática) | Servidor | Não |
| Servidor interativo | Renderização do lado do servidor interativa (SSR interativa) usando Blazor Server | Servidor | Sim |
| WebAssembly interativo | Renderização do lado do cliente (CSR - Client-Side Rendering) usando Blazor WebAssembly† | Cliente | Sim |
| Auto interativo | SSR interativa usando Blazor Server inicialmente e, em seguida, CSR em visitas subsequentes depois que o pacote Blazor é baixado | Servidor, depois o cliente | Sim |
†A renderização do lado do cliente (CSR) é considerada interativa. A "renderização do lado do cliente interativa" e a "CSR interativa" não são usadas pelo setor ou na documentação Blazor.
As informações anteriores sobre modos de renderização são tudo o que você precisa saber para entender os artigos do nó Fundamentos. Se você é novo no Blazor e está lendo os artigos do Blazor na ordem do sumário, pode adiar o aprofundamento em informações detalhadas sobre os modos de renderização até chegar ao artigo Modos de Renderização do ASP.NET Core Blazor no nó Componentes.
Modelo de Objeto do Documento (DOM)
As referências ao Modelo de Objeto de Documento utilizam a abreviação DOM.
Para obter mais informações, consulte os seguintes recursos:
- Introdução ao DOM (documentação do MDN)
- Especificação do Modelo de Objeto do Documento Nível 1 (W3C).
Subconjunto de APIs de .NET para aplicativos Blazor WebAssembly
Uma lista selecionada de APIs de .NET específicas com suporte no navegador para Blazor WebAssembly não está disponível. No entanto, você pode procurar manualmente por uma lista de APIs .NET anotadas com [UnsupportedOSPlatform("browser")] para descobrir APIs .NET que não têm suporte no WebAssembly.
Observação
Links de documentação para o código-fonte de referência do .NET geralmente carregam o branch padrão do repositório, que representa o desenvolvimento atual para a próxima versão do .NET. Para selecionar uma marca para uma versão específica, use a lista suspensa para Alternar branches ou marcas. Para obter mais informações, consulte Como selecionar uma marca de versão do código-fonte ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Para obter mais informações, consulte os seguintes recursos:
- Bibliotecas de Classes: analisador de compatibilidade do navegador do lado do cliente
-
Annotando APIs como sem suporte em plataformas específicas (
dotnet/designsrepositório GitHub
Aplicativos de exemplo
Os aplicativos de exemplo de documentação estão disponíveis para inspeção e download:
Blazor repositório de amostras do GitHub (dotnet/blazor-samples)
Localize um aplicativo de exemplo selecionando primeiro a pasta de versão que corresponde à versão de .NET com a qual você está trabalhando.
Os aplicativos de exemplo contêm apenas um subconjunto de exemplos de artigos para Blazor demonstrações de funcionalidades. Quando um exemplo de código mostrado por um artigo não está em um ou mais dos aplicativos de exemplo, você geralmente pode colocar o código de exemplo em um aplicativo de teste local para uma demonstração.
Exemplos de aplicativos no repositório:
- Blazor Web App
- Blazor WebAssembly
- Exemplo do tutorial Blazor Web App Filmes (Criar um aplicativo de banco de dados de filme Blazor (Visão geral))
- Blazor Web App com SignalR (Use ASP.NET Core SignalR com Blazor)
- Dois Blazor Web Apps e um app Blazor WebAssembly para chamadas a APIs Web (do servidor) (Chamar uma API da Web de um app ASP.NET Core Blazor)
- Blazor Web App com OpenID Connect (OIDC) (Proteja um ASP.NET Core Blazor Web App com OpenID Connect (OIDC))
- Blazor Web App com Entra (Proteger um ASP.NET Core Blazor Web App com Microsoft Entra ID)
- Blazor WebAssembly log habilitado para escopos (ASP.NET Core Blazor log)
- Blazor WebAssembly com ASP.NET Core Identity (Secure ASP.NET Core Blazor WebAssembly com ASP.NET Core Identity)
- .NET MAUI Blazor Hybrid aplicativo com um Blazor Web App e uma interface do usuário compartilhada fornecida por uma biblioteca de classes RCL (Razor) (Construir um aplicativo .NET MAUIBlazor Hybrid com um Blazor Web App)
- Exemplos adicionais (consulte os exemplos Blazor GitHub arquivo README do repositório)
Exemplos de aplicativos no repositório:
- Blazor Web App
- Blazor WebAssembly
- Exemplo do tutorial Blazor Web App Filmes (Criar um aplicativo de banco de dados de filme Blazor (Visão geral))
- Blazor Web App com SignalR (Use ASP.NET Core SignalR com Blazor)
- Dois Blazor Web Apps e um aplicativo Blazor WebAssembly para invocar APIs de servidor da Web (Chamar uma API da Web a partir de um aplicativo ASP.NET Core Blazor)
- Blazor Web App com OIDC (padrões BFF e não BFF) (Proteger um ASP.NET Core Blazor Web App com OpenID Connect (OIDC))
- Blazor WebAssembly registro habilitado para escopos (ASP.NET Core Blazor registro)
- Blazor WebAssembly com ASP.NET Core Identity (Segurança do ASP.NET Core Blazor WebAssembly com ASP.NET Core Identity)
- .NET MAUI Blazor Hybrid aplicativo com um Blazor Web App e fornecido por uma biblioteca de classes Razor, uma interface de usuário compartilhada (RCL) (Construa um aplicativo .NET MAUIBlazor Hybrid com um Blazor Web App)
- Exemplos adicionais (consulte os exemplos Blazor GitHub arquivo README do repositório)
O repositório de exemplo contém dois tipos de exemplos:
- Os aplicativos de amostra de snippet fornecem os exemplos de código que aparecem nos artigos. Esses aplicativos compilam, mas não são necessariamente aplicativos executáveis. Esses aplicativos são úteis apenas para obter os exemplos de código que aparecem em artigos.
- Exemplos de aplicativos para acompanhar artigos Blazor compilados e executados para os seguintes cenários:
- Blazor Server e Blazor WebAssembly com SignalR
- Log habilitado para escopos do Blazor WebAssembly
Para obter mais informações, uma lista dos exemplos no repositório e as instruções de download, consulte o arquivo README do repositório GitHub de exemplos.
O aplicativo de teste básico do repositório ASP.NET Core também é um conjunto útil de exemplos para vários cenários de Blazor:
BasicTestApp na fonte de referência ASP.NET Core (dotnet/aspnetcore)
Observação
Links de documentação para o código-fonte de referência do .NET geralmente carregam o branch padrão do repositório, que representa o desenvolvimento atual para a próxima versão do .NET. Para selecionar uma marca para uma versão específica, use a lista suspensa para Alternar branches ou marcas. Para obter mais informações, consulte Como selecionar uma marca de versão do código-fonte ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Múltiplos de bytes
.NET tamanhos de bytes usam prefixos métricos para múltiplos não decimais de bytes com base em potências de 1024.
| Nome (abreviação) | Tamanho | Exemplo |
|---|---|---|
| Quilobyte (KB) | 1\.024 bytes | 1 KB = 1.024 bytes |
| Megabyte (MB) | 1.0242 bytes | 1 MB = 1.048.576 bytes |
| Gigabyte (GB) | 1.0243 bytes | 1 GB = 1.073.741.824 bytes |
Solicitações de suporte
Somente problemas relacionados à documentação são apropriados para o repositório dotnet/AspNetCore.Docs.
Para suporte ao produto, não abra um problema de documentação. Busque assistência em um ou mais dos seguintes canais de suporte:
Para um eventual bug no framework ou comentários sobre o produto, registre um problema no produto ASP.NET Core em dotnet/aspnetcore problemas. Os relatórios de bug geralmente exigem o seguinte:
- Explicação clara do problema: siga as instruções no modelo de issue do GitHub fornecido pela equipe do produto ao criar a issue.
- Projeto de reprodução mínima: coloque um projeto no GitHub para que os engenheiros da unidade de produto possam baixar e executar. Coloque um link cruzado no comentário de abertura do problema.
Para um possível problema com um artigo o Blazor, abra um problema de documentação. Para abrir um problema de documentação, use o link de comentários Abrir um problema de documentação na parte inferior do artigo. Os metadados adicionados ao seu problema fornecem dados de rastreamento e pingam automaticamente o autor do artigo. Se o assunto foi discutido com a unidade do produto antes da abertura do problema de documentação, coloque um link cruzado para o problema de engenharia no comentário de abertura do problema de documentação.
Para problemas ou comentários sobre Visual Studio, use os gestos Reportar um problema ou Suggest a Feature de dentro Visual Studio, que abrem problemas internos para Visual Studio. Para obter mais informações, consulte Visual Studio Feedback.
Para problemas com Visual Studio Code, peça apoio em fóruns de apoio à comunidade. Para relatórios de bugs e comentários do produto, abra um problema no repositório microsoft/vscode GitHub.
Problemas no GitHub para a documentação de Blazor são automaticamente marcados para triagem no projeto Blazor.Docs (dotnet/AspNetCore.Docs repositório do GitHub). Aguarde um pouco por uma resposta, especialmente nos fins de semana e feriados. Normalmente, os autores da documentação respondem dentro de 24 horas durante a semana.
Links da comunidade para recursos Blazor
Para obter uma coleção de links para recursos Blazor mantidos pela comunidade, visite Awesome Blazor.
Observação
Microsoft não possui, mantém ou dá suporte Awesome Blazor e a maioria dos produtos e serviços da comunidade descritos e vinculados lá.