Bagikan melalui


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 bernama maxAllowedFiles sebagai private int maxAllowedFiles = 3;.
  • Nilai parameter komponen dimulai dengan simbol Razor cadangan @, namun tidak diwajibkan. Literal (misalnya, nilai boolean), kata kunci (misalnya, this), dan null 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 variabel currentCount.

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 dan membaca artikel secara berurutan sesuai dengan daftar isi, Anda dapat menunda mempelajari informasi mendalam tentang mode render ASP.NET Core sampai Anda mencapai artikel di node Komponen.

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:

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:

Aplikasi sampel di repositori:

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.

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.