Dasar-dasar Blazor ASP.NET Core
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Penting
Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Artikel Dasar-dasar memberikan panduan tentang konsep Blazor dasar. Beberapa konsep terkait dengan pemahaman dasar tentang komponen Razor, yang dijelaskan lebih lanjut di bagian berikutnya dari artikel ini dan dibahas secara mendetail dalam artikel Komponen.
Konsep penyajian statis dan interaktif
Razor komponen dirender secara statis atau dirender secara interaktif.
Statis atau penyajian statis adalah skenario sisi server yang berarti komponen dirender tanpa kapasitas untuk interaksi antara pengguna dan kode .NET/C#. Peristiwa JavaScript dan HTML DOM tetap tidak terpengaruh, tetapi tidak ada peristiwa pengguna pada klien yang dapat diproses dengan .NET yang berjalan di server.
"Interaktivitas Interaktif"/"Interaktivitas" atau "Rendering Interaktif" berarti bahwa komponen memiliki kemampuan untuk menangani event .NET dan melakukan binding dengan kode C#. Peristiwa dan pengikatan .NET diproses di server oleh runtime ASP.NET Core atau di browser pada klien oleh runtime Blazor berbasis WebAssembly.
Penting
Saat menggunakan Blazor Web App, sebagian besar komponen contoh dokumentasi Blazormemerlukan interaktivitas untuk berfungsi dan menunjukkan konsep yang dibahas oleh artikel. Saat Anda menguji komponen contoh yang disediakan oleh artikel di Blazor Web App, pastikan bahwa aplikasi mengadopsi interaktivitas global atau komponen mengadopsi mode render interaktif. Informasi selengkapnya tentang subjek ini disediakan oleh mode render ASP.NET Core Blazor di bagian Komponen, yang muncul nanti dalam kumpulan dokumentasi Blazor.
Informasi selengkapnya tentang konsep-konsep ini dan cara mengontrol penyajian statis dan interaktif dapat ditemukan pada artikel mode penyajian ASP.NET Core di bagian selanjutnya dalam Blazor dokumentasi.
Konsep penyajian klien dan server
Sepanjang Blazor dokumentasi, aktivitas yang terjadi pada sistem pengguna dikatakan terjadi di sisi klien atau sisi klien. Aktivitas yang terjadi di server dikatakan terjadi di server atau sisi server.
Istilah penyajian berarti menghasilkan markup HTML yang ditampilkan browser.
Penyajian sisi klien (CSR) berarti markup HTML akhir dihasilkan oleh runtime .NET WebAssembly pada klien. Tidak ada HTML untuk UI yang dihasilkan klien aplikasi yang dikirim dari server ke klien untuk jenis penyajian ini. Interaktivitas pengguna dengan halaman diasumsikan. Tidak ada konsep seperti penyajian sisi klien statis . CSR diasumsikan interaktif, sehingga "penyajian sisi klien interaktif" dan "CSR interaktif" tidak digunakan oleh industri atau dalam Blazor dokumentasi.
Penyajian sisi server (SSR) berarti markup HTML akhir dihasilkan oleh runtime ASP.NET Core di server. HTML dikirim ke klien melalui jaringan untuk ditampilkan oleh browser klien. Tidak ada HTML yang dibuat oleh klien untuk UI yang dihasilkan server aplikasi untuk jenis penyajian ini. SSR dapat terdiri dari dua varietas:
- SSR statis: Server menghasilkan HTML statis yang tidak menyediakan interaktivitas pengguna atau mempertahankan Razor status komponen.
- SSR interaktif: Blazor peristiwa memungkinkan interaktivitas pengguna dan Razor status komponen dikelola oleh Blazor kerangka kerja.
Pra-penyajian adalah proses awalnya merender konten halaman di server tanpa mengaktifkan penanganan aktivitas untuk kontrol yang dirender. Server mengeluarkan UI HTML halaman sesegera mungkin sebagai respons terhadap permintaan awal, yang membuat aplikasi merasa lebih responsif terhadap pengguna. Pra-penyajian juga dapat meningkatkan Pengoptimalan Mesin Pencari (SEO) dengan merender konten untuk respons HTTP awal yang digunakan mesin pencari untuk menghitung peringkat halaman. Pra-penyajian selalu diikuti oleh penyajian akhir, baik di server atau klien.
Komponen Razor
Aplikasi Blazor didasarkan pada komponen Razor, sering disebut hanya sebagai komponen. Komponen adalah elemen UI, seperti halaman, dialog, atau formulir entri data. Komponen adalah kelas C# .NET yang dibangun dalam rakitan .NET.
Razor mengacu pada bagaimana komponen biasanya ditulis dalam bentuk halaman markup Razor untuk logika dan komposisi UI sisi klien.
Razor adalah sintaks untuk menggabungkan markup HTML dengan kode C# yang dirancang untuk produktivitas pengembang. File Razor menggunakan ekstensi file .razor
.
Meskipun beberapa pengembang Blazor dan sumber daya online menggunakan istilah "komponen Blazor", dokumentasi menghindari istilah tersebut dan secara universal menggunakan "komponen Razor" atau "komponen".
Dokumentasi Blazor mengadopsi beberapa konvensi untuk menampilkan dan mendiskusikan komponen:
- Umumnya, contoh mematuhi konvensi pengodean ASP.NET Core/C# dan pedoman teknik. Untuk informasi selengkapnya, lihat sumber daya berikut ini:
- Kode proyek, jalur dan nama file, nama template proyek, dan istilah khusus lainnya dalam bahasa Inggris Amerika Serikat dan biasanya dipagari kode.
- Komponen biasanya dirujuk menggunakan nama kelas C# (Pascal case) diikuti dengan kata "komponen". Misalnya, komponen pengunggahan file umumnya disebut sebagai "komponen
FileUpload
". - Biasanya, nama kelas C# komponen sama dengan nama filenya.
- Komponen yang dapat dirutekan biasanya mengatur URL relatifnya ke nama kelas komponen dalam kebab-case. Misalnya, komponen
FileUpload
menyertakan konfigurasi perutean untuk mengakses komponen yang dirender pada URL relatif/file-upload
. Perutean dan navigasi tercakup dalam perutean dan navigasi Blazor ASP.NET Core. - Ketika beberapa versi komponen digunakan, komponen tersebut diberi nomor secara berurutan. Misalnya, komponen tercapai
FileUpload3
di/file-upload-3
. -
Razor direktif di puncak definisi komponen (
.razor file
) diletakkan dalam urutan berikut:@page
, (@rendermode
.NET 8 atau yang lebih baru),@using
pernyataan, direktif lain dalam urutan alfabet. - Meskipun untuk anggota
private
tidak diperlukan, pengubah akses sering digunakan dalam contoh di artikel dan aplikasi sampel. Misalnya,private
dinyatakan untuk mendeklarasikan bidang bernamamaxAllowedFiles
sebagaiprivate int maxAllowedFiles = 3;
. -
Nilai parameter komponen dimulai dengan simbol Razor cadangan
@
, namun tidak diwajibkan. Literal (misalnya, nilai boolean), kata kunci (misalnya,this
), dannull
karena nilai parameter komponen tidak diawali dengan@
, tetapi ini juga hanya konvensi dokumentasi. Kode Anda sendiri dapat mengawali literal dengan@
jika Anda mau. - Kelas C# menggunakan
this
kata kunci dan menghindari bidang prefiks dengan garis bawah (_
) yang ditetapkan dalam konstruktor, yang berbeda dari pedoman rekayasa kerangka kerja inti ASP.NET. - Dalam contoh yang menggunakan konstruktor utama (C# 12 atau yang lebih baru), parameter konstruktor utama biasanya digunakan langsung oleh anggota kelas. Dalam contoh artikel, baris kode dipisahkan agar pengguliran horizontal berkurang. Jeda ini tidak memengaruhi eksekusi tetapi dapat dihapus saat menempelkan ke proyek Anda.
Informasi tambahan tentang sintaks Razor komponen disediakan di bagian Razor sintaks dari komponen ASP.NET CoreRazor.
Berikut ini adalah contoh komponen penghitung dan bagian dari aplikasi yang dibuat dari template proyek Blazor. Cakupan komponen terperinci ditemukan di artikel Komponen nanti dalam dokumentasi. Contoh berikut menunjukkan konsep komponen yang terlihat di artikel Dasar-dasar sebelum mencapai artikel Komponen nanti dalam dokumentasi.
Counter.razor
:
Komponen mengasumsikan bahwa mode render interaktif diwariskan dari komponen induk atau diterapkan secara global ke aplikasi.
@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++;
}
Komponen mengasumsikan bahwa mode render interaktif diwariskan dari komponen induk atau diterapkan secara global ke aplikasi.
@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++;
}
}
Komponen Counter
sebelumnya:
- Menetapkan rutenya dengan arahan
@page
di baris pertama. - Menetapkan judul halaman dan judul bagian.
- Menampilkan jumlah saat ini dengan
@currentCount
.currentCount
adalah variabel bilangan bulat yang ditentukan dalam kode C# dari blok@code
. - Menampilkan tombol untuk memicu metode
IncrementCount
, yang juga ditemukan di blok@code
dan meningkatkan nilai variabelcurrentCount
.
Mode-mode penggambaran
Artikel dalam node Fundamentals merujuk pada konsep render mode. Subjek ini dibahas secara rinci dalam artikel mode render ASP.NET Core di node Komponen, yang muncul setelah node Dasar-Dasar artikel.
Untuk referensi awal mengenai konsep mode dalam artikel ini, cukup catat hal-hal berikut:
Setiap komponen dalam Blazor Web App mengadopsi mode render untuk menentukan model hosting yang digunakannya, di mana komponen dirender, dan apakah itu dirender secara statis di server, dirender untuk interaktivitas pengguna di server, atau dirender untuk interaktivitas pengguna di sisi klien (biasanya dengan prarendering di server).
Blazor Server dan Blazor WebAssembly aplikasi untuk rilis ASP.NET Core sebelum .NET 8 tetap berfokus pada konsep model hosting, bukan mode render. Mode perenderan secara konseptual diterapkan pada Blazor Web App di .NET 8 atau versi yang lebih baru.
Tabel berikut ini memperlihatkan mode render yang tersedia untuk komponen penyajian Razor dalam Blazor Web App. Mode render diterapkan ke komponen dengan direktif @rendermode
pada instans komponen atau pada definisi komponen. Anda juga dapat mengatur mode render untuk seluruh aplikasi.
Nama | Deskripsi | Lokasi render | Interaktif |
---|---|---|---|
Server Statis | Penyajian sisi server statis (SSR statis) | Server | Tidak |
Server Interaktif | Render sisi server interaktif (SSR interaktif) menggunakan Blazor Server | Server | Ya |
Interactive WebAssembly | Penyajian sisi klien (CSR) menggunakan Blazor WebAssembly† | Klien | Ya |
Otomotif Interaktif | SSR interaktif menggunakan Blazor Server awalnya dan kemudian CSR pada kunjungan selanjutnya setelah Blazor bundel diunduh | Server, lalu klien | Ya |
†Client-side rendering (CSR) diasumsikan interaktif. "Penyajian sisi klien interaktif " dan "CSR interaktif " tidak digunakan oleh industri atau dalam Blazor dokumentasi.
Informasi sebelumnya tentang mode render adalah segala sesuatu yang Anda perlu tahu untuk memahami artikel nodal Fundamentals. Jika Anda baru menggunakan
Model Objek Dokumen (DOM)
Referensi ke Model Objek Dokumen menggunakan singkatan DOM.
Untuk informasi selengkapnya, lihat sumber daya berikut:
Subset API .NET untuk aplikasi Blazor WebAssembly
Daftar terpilih dari API .NET tertentu yang didukung di browser untuk Blazor WebAssembly tidak tersedia. Namun, Anda dapat secara manual mencari daftar API .NET yang dianotasi dengan [UnsupportedOSPlatform("browser")]
untuk menemukan API .NET yang tidak didukung di WebAssembly.
Catatan
Tautan dokumentasi ke sumber referensi .NET biasanya memuat cabang default repositori, yang mewakili pengembangan saat ini untuk rilis .NET berikutnya. Untuk memilih tag untuk rilis tertentu, gunakan menu dropdown Beralih cabang atau tag. Untuk informasi lebih lanjut, lihat Cara memilih tag versi kode sumber ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Untuk informasi selengkapnya, lihat sumber daya berikut:
- Pustaka kelas: Penganalisis kompatibilitas browser sisi klien
-
Menganotasi API sebagai tidak didukung pada platform tertentu (
dotnet/designs
repositori GitHub
Aplikasi sampel
Aplikasi sampel dokumentasi tersedia untuk diperiksa dan diunduh:
Blazor sampel repositori GitHub (dotnet/blazor-samples
)
Temukan aplikasi sampel dengan terlebih dahulu memilih folder versi yang cocok dengan versi .NET yang sedang Anda kerjakan.
Aplikasi sampel di repositori:
- Blazor Web App
- Blazor WebAssembly
- sampel tutorial Blazor Web App Movies (Membangun aplikasi basis data film Blazor) (Gambaran Umum)
- Blazor Web App dengan SignalR (Gunakan ASP.NET Core SignalR dengan Blazor)
- Dua Blazor Web Apps dan aplikasi Blazor WebAssembly untuk memanggil API web (server) (Panggil API web dari aplikasi Blazor ASP.NET Core)
- Blazor Web App menggunakan pola OIDC (BFF dan non-BFF) (Amankan ASP.NET Core Blazor Web App dengan OpenID Connect (OIDC))
- Blazor Web App dengan Entra (Mengamankan ASP.NET Core Blazor Web App dengan Microsoft Entra ID)
- Blazor WebAssemblypengelogan berkemampuan cakupan (Blazor ASP.NET Core)
- Blazor WebAssemblydengan ASP.NET Core Identity (Amankan ASP.NET Core Blazor WebAssembly dengan ASP.NET Core Identity)
- .NET MAUI Blazor Hybrid aplikasi dengan Blazor Web App dan antarmuka pengguna bersama yang disediakan oleh Razor pustaka kelas (RCL) (Bangun .NET MAUIBlazor Hybrid aplikasi dengan Blazor Web App)
- Sampel tambahan (lihat sampel Blazor file README repositori GitHub)
Aplikasi sampel di repositori:
- Blazor Web App
- Blazor WebAssembly
- sampel tutorial Blazor Web App Movies (Membangun aplikasi basis data film Blazor) (Gambaran Umum)
- Blazor Web App dengan SignalR (Gunakan ASP.NET Core SignalR dengan Blazor)
- Dua Blazor Web Apps dan aplikasi Blazor WebAssembly untuk memanggil API web (server) dari ASP.NET Core Blazor app
- Blazor Web App dengan pola OIDC (BFF dan non-BFF) (Amankan ASP.NET Core Blazor Web App dengan OpenID Connect (OIDC))
- Blazor WebAssemblypengelogan berkemampuan cakupan (Blazor ASP.NET Core)
- Blazor WebAssemblydengan ASP.NET Core Identity (Amankan ASP.NET Core Blazor WebAssembly dengan ASP.NET Core Identity)
- .NET MAUI Blazor Hybrid aplikasi dengan Blazor Web App dan UI bersama yang disediakan oleh pustaka kelas Razor (RCL) (Bangun aplikasi .NET MAUIBlazor Hybrid dengan Blazor Web App)
- Sampel tambahan (lihat sampel Blazor file README repositori GitHub)
Repositori sampel berisi dua jenis sampel:
- Aplikasi sampel cuplikan menyediakan contoh kode yang muncul di artikel. Aplikasi ini dikompilasi tetapi belum tentu dapat dijalankan. Aplikasi ini berguna untuk hanya mendapatkan contoh kode yang muncul di artikel.
- Aplikasi sampel yang menyertai artikel Blazor dikompilasi dan dijalankan untuk skenario berikut:
- Blazor Server dan Blazor WebAssembly dengan SignalR
- Blazor WebAssembly pencatatan bercakupan
Untuk informasi selengkapnya, daftar sampel di repositori, dan instruksi pengunduhan, lihat sampel Blazor file README repositori GitHub.
Aplikasi Pengujian Dasar repositori ASP.NET Core juga merupakan serangkaian sampel yang berguna untuk berbagai Blazor skenario:
BasicTestApp
di sumber referensi ASP.NET Core (dotnet/aspnetcore
)
Catatan
Tautan dokumentasi ke sumber referensi .NET biasanya memuat cabang default repositori, yang mewakili pengembangan saat ini untuk rilis .NET berikutnya. Untuk memilih tag untuk rilis tertentu, gunakan menu dropdown Beralih cabang atau tag. Untuk informasi lebih lanjut, lihat Cara memilih tag versi kode sumber ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Kelipatan byte
Ukuran byte dalam .NET menggunakan awalan metrik untuk kelipatan byte non-desimal berdasarkan kelipatan 1024.
Nama (singkatan) | Ukuran | Contoh |
---|---|---|
Kilobyte (KB) | 1.024 byte | 1 KB = 1.024 byte |
Megabyte (MB) | 1.0242 byte | 1 MB = 1.048.576 byte |
Gigabyte (GB) | 1,0243 byte | 1 GB = 1.073.741.824 byte |
Permintaan dukungan
Hanya masalah terkait dokumentasi yang sesuai untuk repositori dotnet/AspNetCore.Docs
.
Untuk dukungan produk, jangan buka masalah dokumentasi. Cari bantuan melalui satu atau beberapa saluran dukungan berikut:
Untuk kemungkinan bug dalam kerangka kerja atau umpan balik produk, buka masalah untuk unit produk ASP.NET Core di masalah dotnet/aspnetcore
. Laporan bug biasanya memerlukan berikut ini:
- Penjelasan masalah yang jelas: Ikuti petunjuk di template masalah GitHub yang disediakan oleh unit produk saat membuka masalah.
- Proyek repro minimal: Tempatkan proyek di GitHub untuk diunduh dan dijalankan oleh teknisi unit produk. Hubungkan silang proyek ke dalam komentar pembuka isu.
Untuk kemungkinan masalah dengan artikel Blazor, buka masalah dokumentasi. Untuk membuka masalah dokumentasi, gunakan tautan Buka umpan balik masalah dokumentasi di bagian bawah artikel. Metadata yang ditambahkan ke masalah Anda menyediakan data pelacakan dan secara otomatis melakukan ping pada penulis artikel. Jika subjek dibahas dengan unit produk sebelum membuka masalah dokumentasi, tempatkan tautan silang ke masalah rekayasa dalam komentar pembukaan masalah dokumentasi.
Untuk masalah atau umpan balik di Visual Studio, gunakan gerakan Laporkan Masalah atau Sarankan Fitur dari dalam Visual Studio, yang membuka masalah internal untuk Visual Studio. Untuk informasi selengkapnya, lihat Umpan Balik Visual Studio.
Untuk masalah dengan Visual Studio Code, mintalah dukungan di forum dukungan komunitas. Untuk laporan bug dan umpan balik produk, buka masalah di repo GitHub microsoft/vscode
.
Masalah GitHub untuk dokumentasi Blazor secara otomatis ditandai untuk pemilahan pada proyek Blazor.Docs
(repositori GitHub dotnet/AspNetCore.Docs
). Harap tunggu beberapa saat untuk memperoleh respons, terutama saat akhir pekan dan hari libur. Biasanya, pembuat dokumentasi merespons dalam waktu 24 jam pada hari kerja.
Tautan komunitas ke sumber daya Blazor
Untuk kumpulan tautan ke sumber daya Blazor yang dikelola oleh komunitas, kunjungi Awesome Blazor.
Catatan
Microsoft tidak memiliki, mengelola, atau mendukung Awesome Blazor dan sebagian besar produk dan layanan komunitas yang dijelaskan dan ditautkan di sana.
ASP.NET Core