Menggunakan templat proyek Angular dengan ASP.NET Core
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 8 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 8 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 8 dari artikel ini.
Visual Studio menyediakan templat proyek untuk membuat aplikasi satu halaman (SPAs) berdasarkan kerangka kerja JavaScript seperti Angular, React, dan Vue yang memiliki backend ASP.NET Core. Templat ini:
- Buat solusi Visual Studio dengan proyek frontend dan proyek backend.
- Gunakan jenis proyek Visual Studio untuk JavaScript dan TypeScript (.esproj) untuk frontend.
- Gunakan proyek ASP.NET Core untuk backend.
Proyek yang dibuat dengan menggunakan templat Visual Studio dapat dijalankan dari baris perintah di Windows, Linux, dan macOS. Untuk menjalankan aplikasi, gunakan dotnet run --launch-profile https
untuk menjalankan proyek server. Menjalankan proyek server secara otomatis memulai server pengembangan JavaScript frontend. Profil https
peluncuran saat ini diperlukan.
Tutorial Visual Studio
Untuk mulai menggunakan proyek Angular, ikuti tutorial Membuat aplikasi ASP.NET Core dengan Angular dalam dokumentasi Visual Studio.
Untuk informasi selengkapnya, lihat JavaScript dan TypeScript di Visual Studio
ASP.NET templat SPA Inti
Visual Studio menyertakan templat untuk membangun aplikasi ASP.NET Core dengan frontend JavaScript atau TypeScript. Templat ini tersedia di Visual Studio 2022 versi 17.8 atau yang lebih baru dengan beban kerja ASP.NET dan pengembangan web terinstal.
Templat Visual Studio untuk membangun aplikasi ASP.NET Core dengan frontend JavaScript atau TypeScript menawarkan manfaat berikut:
- Bersihkan pemisahan proyek untuk frontend dan backend.
- Tetap up-to-date dengan versi kerangka kerja frontend terbaru.
- Integrasikan dengan alat baris perintah kerangka kerja frontend terbaru, seperti Vite.
- Templat untuk JavaScript & TypeScript (hanya TypeScript untuk Angular).
- Pengalaman pengeditan kode JavaScript dan TypeScript yang kaya.
- Integrasikan alat build JavaScript dengan build .NET.
- UI manajemen dependensi npm.
- Kompatibel dengan debugging Visual Studio Code dan konfigurasi peluncuran.
- Jalankan pengujian unit frontend di Test Explorer menggunakan kerangka kerja pengujian JavaScript.
Templat Warisan ASP.NET Core SPA
Versi .NET SDK yang lebih lama menyertakan templat warisan apa yang sekarang untuk membangun aplikasi SPA dengan ASP.NET Core. Untuk dokumentasi tentang templat lama ini, lihat gambaran umum SPA versi ASP.NET Core 7.0 dan artikel Angular dan React .
Templat proyek ASP.NET Core with Angular menyediakan titik awal yang nyaman untuk aplikasi ASP.NET Core menggunakan Angular dan CLI Angular untuk mengimplementasikan antarmuka pengguna (UI) sisi klien yang kaya.
Templat proyek setara dengan membuat proyek ASP.NET Core untuk bertindak sebagai API web dan proyek Angular CLI untuk bertindak sebagai UI. Kombinasi proyek ini menawarkan kenyamanan menghosting kedua proyek dalam satu proyek ASP.NET Core yang dapat dibangun dan diterbitkan sebagai satu unit.
Templat proyek tidak dimaksudkan untuk penyajian sisi server (SSR).
Membuat aplikasi baru
Buat proyek baru dari prompt perintah menggunakan perintah dotnet new angular
di direktori kosong. Misalnya, perintah berikut membuat aplikasi di my-new-app
direktori dan beralih ke direktori tersebut:
dotnet new angular -o my-new-app
cd my-new-app
Jalankan aplikasi dari Visual Studio atau .NET CLI:
Buka file yang dihasilkan .csproj
, dan jalankan aplikasi seperti biasa dari sana.
Proses build memulihkan dependensi npm pada eksekusi pertama, yang dapat memakan waktu beberapa menit. Build berikutnya jauh lebih cepat.
Templat proyek membuat aplikasi ASP.NET Core dan aplikasi Angular. Aplikasi ASP.NET Core dimaksudkan untuk digunakan untuk akses data, otorisasi, dan masalah sisi server lainnya. Aplikasi Angular, yang berada di ClientApp
subdirektori, dimaksudkan untuk digunakan untuk semua masalah UI.
Menambahkan halaman, gambar, gaya, dan modul
ClientApp
Direktori berisi aplikasi CLI Angular standar. Lihat dokumentasi resmi Angular untuk informasi selengkapnya.
Ada sedikit perbedaan antara aplikasi Angular yang dibuat oleh templat ini dan yang dibuat oleh Angular CLI itu sendiri (melalui ng new
); namun, kemampuan aplikasi tidak berubah. Aplikasi yang dibuat oleh templat berisi tata letak berbasis Bootstrap dan contoh perutean dasar.
Menjalankan perintah ng
Di prompt perintah, beralihlah ke subdirektori ClientApp
:
cd ClientApp
Jika Anda memiliki alat yang ng
diinstal secara global, Anda dapat menjalankan salah satu perintahnya. Misalnya, Anda dapat menjalankan ng lint
, ng test
, atau perintah CLI Angular lainnya. Namun, tidak perlu dijalankan ng serve
karena aplikasi ASP.NET Core Anda menangani penyajian bagian sisi server dan sisi klien aplikasi Anda. Secara internal, ia menggunakan ng serve
dalam pengembangan.
Jika Anda tidak menginstal alat, jalankan npm run ng
sebagai gantinyang
. Misalnya, Anda dapat menjalankan npm run ng lint
atau npm run ng test
.
Memasang paket npm
Untuk menginstal paket npm pihak ketiga, gunakan prompt perintah di subdirektori ClientApp
. Contohnya:
cd ClientApp
npm install <package_name>
Menerbitkan dan menyebarkan
Dalam pengembangan, aplikasi berjalan dalam mode yang dioptimalkan untuk kenyamanan pengembang. Misalnya, bundel JavaScript menyertakan peta sumber (sehingga saat penelusuran kesalahan, Anda dapat melihat kode TypeScript asli Anda). Aplikasi mengawasi perubahan file TypeScript, HTML, dan CSS pada disk dan secara otomatis mengkombinasi ulang dan memuat ulang ketika melihat file tersebut berubah.
Dalam produksi, sajikan versi aplikasi Anda yang dioptimalkan untuk performa. Ini dikonfigurasi untuk terjadi secara otomatis. Saat Anda menerbitkan, konfigurasi build memancarkan build yang dikurangi dan dikompilasi sebelumnya (AoT) dari kode sisi klien Anda. Tidak seperti build pengembangan, build produksi tidak memerlukan Node.js untuk diinstal pada server (kecuali Anda telah mengaktifkan penyajian sisi server (SSR)).
Anda dapat menggunakan metode hosting dan penyebaran ASP.NET Core standar.
Jalankan "ng serve" secara independen
Proyek ini dikonfigurasi untuk memulai instans server CLI Angular sendiri di latar belakang saat aplikasi ASP.NET Core dimulai dalam mode pengembangan. Ini nyaman karena Anda tidak perlu menjalankan server terpisah secara manual.
Ada kelemahan untuk penyiapan default ini. Setiap kali Anda memodifikasi kode C# dan aplikasi ASP.NET Core Anda perlu dimulai ulang, server CLI Angular dimulai ulang. Sekitar 10 detik diperlukan untuk memulai pencadangan. Jika Anda sering melakukan pengeditan kode C# dan tidak ingin menunggu CLI Angular dimulai ulang, jalankan server CLI Angular secara eksternal, secara independen dari proses ASP.NET Core.
Untuk menjalankan server CLI Angular secara eksternal, beralihlah ke ClientApp
subdirektori dalam prompt perintah dan luncurkan server pengembangan Angular CLI:
cd ClientApp
npm start
Saat Anda memulai aplikasi ASP.NET Core, aplikasi tersebut tidak akan meluncurkan server Angular CLI. Instans yang Anda mulai secara manual digunakan sebagai gantinya. Ini memungkinkannya untuk memulai dan memulai ulang lebih cepat. Tidak lagi menunggu CLI Angular membangun kembali aplikasi klien Anda setiap kali.
Ketika proksi diluncurkan, URL target dan port disimpulkan dari variabel lingkungan yang ditetapkan oleh .NET, ASPNETCORE_URLS
dan ASPNETCORE_HTTPS_PORTS
. Untuk mengatur URL atau port HTTPS, gunakan salah satu variabel lingkungan atau ubah nilai di proxy.conf.json
.
Mengonfigurasi middleware proksi untuk SignalR
Untuk informasi selengkapnya, lihat http-proxy-middleware.
Sumber Daya Tambahan:
Templat proyek Angular yang diperbarui menyediakan titik awal yang nyaman untuk aplikasi ASP.NET Core menggunakan Angular dan CLI Angular untuk mengimplementasikan antarmuka pengguna (UI) sisi klien yang kaya.
Templat ini setara dengan membuat proyek ASP.NET Core untuk bertindak sebagai backend API dan proyek CLI Angular untuk bertindak sebagai UI. Templat ini menawarkan kenyamanan menghosting kedua jenis proyek dalam satu proyek aplikasi. Akibatnya, proyek aplikasi dapat dibangun dan diterbitkan sebagai satu unit.
Membuat aplikasi baru
Buat proyek baru dari prompt perintah menggunakan perintah dotnet new angular
di direktori kosong. Misalnya, perintah berikut membuat aplikasi di my-new-app
direktori dan beralih ke direktori tersebut:
dotnet new angular -o my-new-app
cd my-new-app
Jalankan aplikasi dari Visual Studio atau .NET CLI:
Buka file yang dihasilkan .csproj
, dan jalankan aplikasi seperti biasa dari sana.
Proses build memulihkan dependensi npm pada eksekusi pertama, yang dapat memakan waktu beberapa menit. Build berikutnya jauh lebih cepat.
Templat proyek membuat aplikasi ASP.NET Core dan aplikasi Angular. Aplikasi ASP.NET Core dimaksudkan untuk digunakan untuk akses data, otorisasi, dan masalah sisi server lainnya. Aplikasi Angular, yang berada di ClientApp
subdirektori, dimaksudkan untuk digunakan untuk semua masalah UI.
Menambahkan halaman, gambar, gaya, dan modul
ClientApp
Direktori berisi aplikasi CLI Angular standar. Lihat dokumentasi resmi Angular untuk informasi selengkapnya.
Ada sedikit perbedaan antara aplikasi Angular yang dibuat oleh templat ini dan yang dibuat oleh Angular CLI itu sendiri (melalui ng new
); namun, kemampuan aplikasi tidak berubah. Aplikasi yang dibuat oleh templat berisi tata letak berbasis Bootstrap dan contoh perutean dasar.
Menjalankan perintah ng
Di prompt perintah, beralihlah ke subdirektori ClientApp
:
cd ClientApp
Jika Anda memiliki alat yang ng
diinstal secara global, Anda dapat menjalankan salah satu perintahnya. Misalnya, Anda dapat menjalankan ng lint
, ng test
, atau perintah CLI Angular lainnya. Namun, tidak perlu dijalankan ng serve
karena aplikasi ASP.NET Core Anda menangani penyajian bagian sisi server dan sisi klien aplikasi Anda. Secara internal, ia menggunakan ng serve
dalam pengembangan.
Jika Anda tidak menginstal alat, jalankan npm run ng
sebagai gantinyang
. Misalnya, Anda dapat menjalankan npm run ng lint
atau npm run ng test
.
Memasang paket npm
Untuk menginstal paket npm pihak ketiga, gunakan prompt perintah di subdirektori ClientApp
. Contohnya:
cd ClientApp
npm install --save <package_name>
Menerbitkan dan menyebarkan
Dalam pengembangan, aplikasi berjalan dalam mode yang dioptimalkan untuk kenyamanan pengembang. Misalnya, bundel JavaScript menyertakan peta sumber (sehingga saat penelusuran kesalahan, Anda dapat melihat kode TypeScript asli Anda). Aplikasi mengawasi perubahan file TypeScript, HTML, dan CSS pada disk dan secara otomatis mengkombinasi ulang dan memuat ulang ketika melihat file tersebut berubah.
Dalam produksi, sajikan versi aplikasi Anda yang dioptimalkan untuk performa. Ini dikonfigurasi untuk terjadi secara otomatis. Saat Anda menerbitkan, konfigurasi build memancarkan build yang dikurangi dan dikompilasi sebelumnya (AoT) dari kode sisi klien Anda. Tidak seperti build pengembangan, build produksi tidak memerlukan Node.js untuk diinstal pada server (kecuali Anda telah mengaktifkan penyajian sisi server (SSR)).
Anda dapat menggunakan metode hosting dan penyebaran ASP.NET Core standar.
Jalankan "ng serve" secara independen
Proyek ini dikonfigurasi untuk memulai instans server CLI Angular sendiri di latar belakang saat aplikasi ASP.NET Core dimulai dalam mode pengembangan. Ini nyaman karena Anda tidak perlu menjalankan server terpisah secara manual.
Ada kelemahan untuk penyiapan default ini. Setiap kali Anda memodifikasi kode C# dan aplikasi ASP.NET Core Anda perlu dimulai ulang, server CLI Angular dimulai ulang. Sekitar 10 detik diperlukan untuk memulai pencadangan. Jika Anda sering melakukan pengeditan kode C# dan tidak ingin menunggu CLI Angular dimulai ulang, jalankan server CLI Angular secara eksternal, secara independen dari proses ASP.NET Core. Untuk melakukannya:
Dalam prompt perintah, beralihlah ke
ClientApp
subdirektori, dan luncurkan server pengembangan Angular CLI:cd ClientApp npm start
Penting
Gunakan
npm start
untuk meluncurkan server pengembangan CLI Angular, bukanng serve
, sehingga konfigurasi dihormatipackage.json
. Untuk meneruskan parameter tambahan ke server Angular CLI, tambahkan ke baris yang relevanscripts
dalam file Andapackage.json
.Ubah aplikasi ASP.NET Core Anda untuk menggunakan instans CLI Angular eksternal alih-alih meluncurkan salah satu aplikasinya sendiri. Di kelas Startup Anda, ganti
spa.UseAngularCliServer
pemanggilan dengan yang berikut:spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");
Saat Anda memulai aplikasi ASP.NET Core, aplikasi tersebut tidak akan meluncurkan server Angular CLI. Instans yang Anda mulai secara manual digunakan sebagai gantinya. Ini memungkinkannya untuk memulai dan memulai ulang lebih cepat. Tidak lagi menunggu CLI Angular membangun kembali aplikasi klien Anda setiap kali.
Ketika proksi diluncurkan, URL target dan port disimpulkan dari variabel lingkungan yang ditetapkan oleh .NET, ASPNETCORE_URLS
dan ASPNETCORE_HTTPS_PORTS
. Untuk mengatur URL atau port HTTPS, gunakan salah satu variabel lingkungan atau ubah nilai di proxy.conf.json
.
Meneruskan data dari kode .NET ke kode TypeScript
Selama SSR, Anda mungkin ingin meneruskan data per permintaan dari aplikasi ASP.NET Core ke aplikasi Angular Anda. Misalnya, Anda dapat meneruskan cookie informasi atau sesuatu yang dibaca dari database. Untuk melakukan ini, edit kelas Startup Anda. Dalam panggilan balik untuk UseSpaPrerendering
, tetapkan nilai untuk options.SupplyData
seperti berikut ini:
options.SupplyData = (context, data) =>
{
// Creates a new value called isHttpsRequest that's passed to TypeScript code
data["isHttpsRequest"] = context.Request.IsHttps;
};
Panggilan SupplyData
balik memungkinkan Anda meneruskan data yang dapat diserialisasikan JSON, per permintaan , yang dapat diserialisasikan (misalnya, string, boolean, atau angka). Kode Anda main.server.ts
menerima ini sebagai params.data
. Misalnya, sampel kode sebelumnya meneruskan nilai boolean seperti params.data.isHttpsRequest
ke createServerRenderer
dalam panggilan balik. Anda dapat meneruskan ini ke bagian lain aplikasi Anda dengan cara apa pun yang didukung oleh Angular. Misalnya, lihat bagaimana main.server.ts
meneruskan BASE_URL
nilai ke komponen mana pun yang konstruktornya dinyatakan menerimanya.
Kelemahan SSR
Tidak semua aplikasi mendapat manfaat dari SSR. Manfaat utama adalah performa yang dirasakan. Pengunjung yang menjangkau aplikasi Anda melalui koneksi jaringan yang lambat atau di perangkat seluler yang lambat melihat antarmuka pengguna awal dengan cepat, bahkan jika perlu waktu beberapa saat untuk mengambil atau mengurai bundel JavaScript. Namun, banyak SPA terutama digunakan melalui jaringan perusahaan internal yang cepat di komputer cepat di mana aplikasi muncul hampir seketika.
Pada saat yang sama, ada kelemahan yang signifikan untuk mengaktifkan SSR. Ini menambah kompleksitas pada proses pengembangan Anda. Kode Anda harus berjalan di dua lingkungan yang berbeda: sisi klien dan sisi server (di lingkungan Node.js yang dipanggil dari ASP.NET Core). Berikut adalah beberapa hal yang perlu diingat:
- SSR memerlukan Node.js penginstalan di server produksi Anda. Ini secara otomatis terjadi untuk beberapa skenario penyebaran, seperti Azure App Services, tetapi tidak untuk yang lain, seperti Azure Service Fabric.
- Mengaktifkan
BuildServerSideRenderer
bendera build menyebabkan direktori node_modules Anda diterbitkan. Folder ini berisi 20.000+ file, yang meningkatkan waktu penyebaran. - Untuk menjalankan kode Anda di Node.js lingkungan, ini tidak dapat mengandalkan keberadaan API JavaScript khusus browser seperti
window
ataulocalStorage
. Jika kode Anda (atau beberapa pustaka pihak ketiga yang Anda referensikan) mencoba menggunakan API ini, Anda akan mendapatkan kesalahan selama SSR. Misalnya, jangan gunakan jQuery karena mereferensikan API khusus browser di banyak tempat. Untuk mencegah kesalahan, Anda harus menghindari SSR atau menghindari API atau pustaka khusus browser. Anda dapat membungkus panggilan apa pun ke API tersebut dalam pemeriksaan untuk memastikan mereka tidak dipanggil selama SSR. Misalnya, gunakan pemeriksaan seperti berikut ini dalam kode JavaScript atau TypeScript:
if (typeof window !== 'undefined') {
// Call browser-specific APIs here
}
Mengonfigurasi middleware proksi untuk SignalR
Untuk informasi selengkapnya, lihat http-proxy-middleware.
Sumber Daya Tambahan:
ASP.NET Core