ASP.NET Core ile Angular proje şablonunu kullanma
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.
Visual Studio, ASP.NET Core arka ucuna sahip Angular, React ve Vue gibi JavaScript çerçevelerini temel alan tek sayfalı uygulamalar (SPA) oluşturmak için proje şablonları sağlar. Bu şablonlar:
- Ön uç projesi ve arka uç projesiyle visual studio çözümü oluşturun.
- Ön uç için JavaScript ve TypeScript (.esproj) için Visual Studio proje türünü kullanın.
- Arka uç için bir ASP.NET Core projesi kullanın.
Visual Studio şablonları kullanılarak oluşturulan projeler Windows, Linux ve macOS'ta komut satırından çalıştırılabilir. Uygulamayı çalıştırmak için komutunu kullanarak dotnet run --launch-profile https
sunucu projesini çalıştırın. Sunucu projesini çalıştırmak, ön uç JavaScript geliştirme sunucusunu otomatik olarak başlatır. Başlatma https
profili şu anda gereklidir.
Visual Studio öğreticisi
Angular projesiyle çalışmaya başlamak için Visual Studio belgelerindeki Angular ile ASP.NET Core uygulaması oluşturma öğreticisini izleyin.
Daha fazla bilgi için bkz. Visual Studio'da JavaScript ve TypeScript
ASP.NET Core SPA şablonları
Visual Studio, JavaScript veya TypeScript ön ucuyla ASP.NET Core uygulamaları oluşturmaya yönelik şablonlar içerir. Bu şablonlar Visual Studio 2022 sürüm 17.8 veya sonraki sürümlerde ASP.NET ve web geliştirme iş yükü yüklü olarak kullanılabilir.
JavaScript veya TypeScript ön ucuyla ASP.NET Core uygulamaları oluşturmaya yönelik Visual Studio şablonları aşağıdaki avantajları sunar:
- Ön uç ve arka uç için temiz proje ayrımı.
- En son ön uç çerçevesi sürümleriyle güncel kalın.
- Vite gibi en son ön uç çerçevesi komut satırı araçlarıyla tümleştirin.
- Hem JavaScript hem de TypeScript için şablonlar (yalnızca Angular için TypeScript).
- Zengin JavaScript ve TypeScript kod düzenleme deneyimi.
- JavaScript derleme araçlarını .NET derlemesiyle tümleştirin.
- npm bağımlılık yönetimi kullanıcı arabirimi.
- Visual Studio Code hata ayıklama ve başlatma yapılandırmasıyla uyumludur.
- JavaScript test çerçevelerini kullanarak Test Gezgini'nde ön uç birim testleri çalıştırın.
Eski ASP.NET Core SPA şablonları
.NET SDK'sının önceki sürümleri, ASP.NET Core ile SPA uygulamaları oluşturmaya yönelik eski şablonları içeriyor. Bu eski şablonlarla ilgili belgeler için SPA'ya genel bakış ASP.NET Core 7.0 sürümüne ve Angular ve React makalelerine bakın.
Angular ile ASP.NET Core proje şablonu, Angular ve Angular CLI kullanan ASP.NET Core uygulamalarının zengin, istemci tarafı kullanıcı arabirimi (UI) uygulaması için kullanışlı bir başlangıç noktası sağlar.
Proje şablonu hem web API'si olarak davranacak bir ASP.NET Core projesi hem de kullanıcı arabirimi olarak davranacak bir Angular CLI projesi oluşturmakla eşdeğerdir. Bu proje bileşimi, her iki projeyi de tek bir birim olarak oluşturulabilen ve yayımlanabilen tek bir ASP.NET Core projesinde barındırma kolaylığı sunar.
Proje şablonu sunucu tarafı işleme (SSR) için tasarlanmamıştır.
Yeni uygulama oluşturma
Komutunu boş bir dizinde kullanarak dotnet new angular
komut isteminden yeni bir proje oluşturun. Örneğin, aşağıdaki komutlar uygulamayı bir my-new-app
dizinde oluşturur ve bu dizine geçer:
dotnet new angular -o my-new-app
cd my-new-app
Uygulamayı Visual Studio'dan veya .NET CLI'dan çalıştırın:
Oluşturulan .csproj
dosyayı açın ve uygulamayı oradan normal şekilde çalıştırın.
Derleme işlemi ilk çalıştırmada npm bağımlılıklarını geri yükler ve bu işlem birkaç dakika sürebilir. Sonraki derlemeler çok daha hızlıdır.
Proje şablonu bir ASP.NET Core uygulaması ve angular uygulaması oluşturur. ASP.NET Core uygulamasının veri erişimi, yetkilendirme ve diğer sunucu tarafı endişeleri için kullanılması amaçlanmıştır. Alt dizinde bulunan Angular uygulamasının ClientApp
tüm kullanıcı arabirimi endişeleri için kullanılması amaçlanmıştır.
Sayfa, resim, stil ve modül ekleme
Dizin, ClientApp
standart bir Angular CLI uygulaması içerir. Daha fazla bilgi için resmi Angular belgelerine bakın.
Bu şablon tarafından oluşturulan Angular uygulaması ile Angular CLI tarafından oluşturulan uygulama arasında küçük farklılıklar vardır (aracılığıyla ng new
); ancak uygulamanın özellikleri değişmez. Şablon tarafından oluşturulan uygulama, Bootstrap tabanlı bir düzen ve temel yönlendirme örneği içerir.
ng komutlarını çalıştırma
Komut isteminde alt dizine ClientApp
geçin:
cd ClientApp
Aracı genel olarak yüklediyseniz ng
komutlarından herhangi birini çalıştırabilirsiniz. Örneğin, , veya diğer Angular CLI komutlarından herhangi birini çalıştırabilirsinizng lint
. ng test
Ancak, ASP.NET Core uygulamanız uygulamanızın hem sunucu tarafı hem de istemci tarafı bölümlerine hizmet vermekle çalıştığından çalıştırmanız ng serve
gerekmez. Dahili olarak geliştirme aşamasında kullanılır ng serve
.
ng
Araç yüklü değilse, bunun yerine komutunu çalıştırınnpm run ng
. Örneğin, veya npm run ng test
komutunu çalıştırabilirsiniznpm run ng lint
.
npm paketlerini yükleme
Üçüncü taraf npm paketlerini yüklemek için alt dizinde ClientApp
bir komut istemi kullanın. Örneğin:
cd ClientApp
npm install <package_name>
Yayımlama ve dağıtma
Geliştirme aşamasında uygulama, geliştirici kolaylığı için iyileştirilmiş bir modda çalışır. Örneğin, JavaScript paketleri kaynak eşlemeleri içerir (böylece hata ayıklarken özgün TypeScript kodunuzu görebilirsiniz). Uygulama, diskte TypeScript, HTML ve CSS dosyası değişikliklerini izler ve bu dosyaların değiştiğini gördüğünde otomatik olarak yeniden derlenir ve yeniden yüklenir.
Üretimde, uygulamanızın performans için iyileştirilmiş bir sürümünü sunun. Bu, otomatik olarak gerçekleşecek şekilde yapılandırılır. Yayımladığınızda, derleme yapılandırması istemci tarafı kodunuzun küçültülmüş, önceden derlenmiş bir derlemesini (AoT) yayar. Geliştirme derlemesinin aksine, üretim derlemesi Node gerektirmez.js (sunucu tarafı işlemeyi (SSR) etkinleştirmediğiniz sürece) sunucuya yüklenecek.
Standart ASP.NET Core barındırma ve dağıtım yöntemlerini kullanabilirsiniz.
"ng serve" komutunu bağımsız olarak çalıştırma
proje, ASP.NET Core uygulaması geliştirme modunda başladığında arka planda angular CLI sunucusunun kendi örneğini başlatacak şekilde yapılandırılır. Ayrı bir sunucuyu el ile çalıştırmanız gerekmeyen bu kullanışlı bir işlemdir.
Bu varsayılan kurulumun bir dezavantajı vardır. C# kodunuzu değiştirdiğinizde ve ASP.NET Core uygulamanızın yeniden başlatılması gerektiğinde Angular CLI sunucusu yeniden başlatılır. Yedeklemeyi başlatmak için yaklaşık 10 saniye gerekir. Sık sık C# kodu düzenlemeleri yapıyorsanız ve Angular CLI'nin yeniden başlatılmasını beklemek istemiyorsanız Angular CLI sunucusunu ASP.NET Core işleminden bağımsız olarak harici olarak çalıştırın.
Angular CLI sunucusunu harici olarak çalıştırmak için komut isteminde alt dizine ClientApp
geçin ve Angular CLI geliştirme sunucusunu başlatın:
cd ClientApp
npm start
ASP.NET Core uygulamanızı başlattığınızda angular CLI sunucusu başlatılmaz. Bunun yerine el ile başlattığınız örnek kullanılır. Bu, daha hızlı başlatılmasını ve yeniden başlatılmasını sağlar. Artık Angular CLI'nin istemci uygulamanızı her seferinde yeniden oluşturmasını beklemiyorum.
Ara sunucu başlatıldığında, hedef URL ve bağlantı noktası .NET ASPNETCORE_URLS
ASPNETCORE_HTTPS_PORTS
ve tarafından ayarlanan ortam değişkenlerinden çıkarılır. URL'leri veya HTTPS bağlantı noktasını ayarlamak için ortam değişkenlerinden birini kullanın veya içindeki proxy.conf.json
değeri değiştirin.
Için ara sunucu ara yazılımını yapılandırma SignalR
Daha fazla bilgi için bkz . http-proxy-ara yazılım.
Ek kaynaklar
Güncelleştirilmiş Angular proje şablonu, zengin, istemci tarafı kullanıcı arabirimi (UI) uygulamak için Angular ve Angular CLI kullanan ASP.NET Core uygulamaları için kullanışlı bir başlangıç noktası sağlar.
Şablon, API arka ucu olarak hareket eden bir ASP.NET Core projesi ve kullanıcı arabirimi işlevi görmek için Angular CLI projesi oluşturmaya eşdeğerdir. Şablon, her iki proje türünü de tek bir uygulama projesinde barındırma kolaylığı sunar. Sonuç olarak, uygulama projesi tek bir birim olarak derlenebilir ve yayımlanabilir.
Yeni uygulama oluşturma
Komutunu boş bir dizinde kullanarak dotnet new angular
komut isteminden yeni bir proje oluşturun. Örneğin, aşağıdaki komutlar uygulamayı bir my-new-app
dizinde oluşturur ve bu dizine geçer:
dotnet new angular -o my-new-app
cd my-new-app
Uygulamayı Visual Studio'dan veya .NET CLI'dan çalıştırın:
Oluşturulan .csproj
dosyayı açın ve uygulamayı oradan normal şekilde çalıştırın.
Derleme işlemi ilk çalıştırmada npm bağımlılıklarını geri yükler ve bu işlem birkaç dakika sürebilir. Sonraki derlemeler çok daha hızlıdır.
Proje şablonu bir ASP.NET Core uygulaması ve angular uygulaması oluşturur. ASP.NET Core uygulamasının veri erişimi, yetkilendirme ve diğer sunucu tarafı endişeleri için kullanılması amaçlanmıştır. Alt dizinde bulunan Angular uygulamasının ClientApp
tüm kullanıcı arabirimi endişeleri için kullanılması amaçlanmıştır.
Sayfa, resim, stil ve modül ekleme
Dizin, ClientApp
standart bir Angular CLI uygulaması içerir. Daha fazla bilgi için resmi Angular belgelerine bakın.
Bu şablon tarafından oluşturulan Angular uygulaması ile Angular CLI tarafından oluşturulan uygulama arasında küçük farklılıklar vardır (aracılığıyla ng new
); ancak uygulamanın özellikleri değişmez. Şablon tarafından oluşturulan uygulama, Bootstrap tabanlı bir düzen ve temel yönlendirme örneği içerir.
ng komutlarını çalıştırma
Komut isteminde alt dizine ClientApp
geçin:
cd ClientApp
Aracı genel olarak yüklediyseniz ng
komutlarından herhangi birini çalıştırabilirsiniz. Örneğin, , veya diğer Angular CLI komutlarından herhangi birini çalıştırabilirsinizng lint
. ng test
Ancak, ASP.NET Core uygulamanız uygulamanızın hem sunucu tarafı hem de istemci tarafı bölümlerine hizmet vermekle çalıştığından çalıştırmanız ng serve
gerekmez. Dahili olarak geliştirme aşamasında kullanılır ng serve
.
ng
Araç yüklü değilse, bunun yerine komutunu çalıştırınnpm run ng
. Örneğin, veya npm run ng test
komutunu çalıştırabilirsiniznpm run ng lint
.
npm paketlerini yükleme
Üçüncü taraf npm paketlerini yüklemek için alt dizinde ClientApp
bir komut istemi kullanın. Örneğin:
cd ClientApp
npm install --save <package_name>
Yayımlama ve dağıtma
Geliştirme aşamasında uygulama, geliştirici kolaylığı için iyileştirilmiş bir modda çalışır. Örneğin, JavaScript paketleri kaynak eşlemeleri içerir (böylece hata ayıklarken özgün TypeScript kodunuzu görebilirsiniz). Uygulama, diskte TypeScript, HTML ve CSS dosyası değişikliklerini izler ve bu dosyaların değiştiğini gördüğünde otomatik olarak yeniden derlenir ve yeniden yüklenir.
Üretimde, uygulamanızın performans için iyileştirilmiş bir sürümünü sunun. Bu, otomatik olarak gerçekleşecek şekilde yapılandırılır. Yayımladığınızda, derleme yapılandırması istemci tarafı kodunuzun küçültülmüş, önceden derlenmiş bir derlemesini (AoT) yayar. Geliştirme derlemesinin aksine, üretim derlemesi Node gerektirmez.js (sunucu tarafı işlemeyi (SSR) etkinleştirmediğiniz sürece) sunucuya yüklenecek.
Standart ASP.NET Core barındırma ve dağıtım yöntemlerini kullanabilirsiniz.
"ng serve" komutunu bağımsız olarak çalıştırma
proje, ASP.NET Core uygulaması geliştirme modunda başladığında arka planda angular CLI sunucusunun kendi örneğini başlatacak şekilde yapılandırılır. Ayrı bir sunucuyu el ile çalıştırmanız gerekmeyen bu kullanışlı bir işlemdir.
Bu varsayılan kurulumun bir dezavantajı vardır. C# kodunuzu değiştirdiğinizde ve ASP.NET Core uygulamanızın yeniden başlatılması gerektiğinde Angular CLI sunucusu yeniden başlatılır. Yedeklemeyi başlatmak için yaklaşık 10 saniye gerekir. Sık sık C# kodu düzenlemeleri yapıyorsanız ve Angular CLI'nin yeniden başlatılmasını beklemek istemiyorsanız Angular CLI sunucusunu ASP.NET Core işleminden bağımsız olarak harici olarak çalıştırın. Yapmak için:
Komut isteminde alt dizine
ClientApp
geçin ve Angular CLI geliştirme sunucusunu başlatın:cd ClientApp npm start
Önemli
içindeki yapılandırmaya
package.json
uyulması için yerine Angular CLI geliştirme sunucusunung serve
başlatmak için kullanınnpm start
. Angular CLI sunucusuna ek parametreler geçirmek için bunları dosyanızdakipackage.json
ilgiliscripts
satıra ekleyin.ASP.NET Core uygulamanızı kendi uygulamanızı başlatmak yerine dış Angular CLI örneğini kullanacak şekilde değiştirin. Başlangıç sınıfınızda çağrıyı
spa.UseAngularCliServer
aşağıdakilerle değiştirin:spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");
ASP.NET Core uygulamanızı başlattığınızda angular CLI sunucusu başlatılmaz. Bunun yerine el ile başlattığınız örnek kullanılır. Bu, daha hızlı başlatılmasını ve yeniden başlatılmasını sağlar. Artık Angular CLI'nin istemci uygulamanızı her seferinde yeniden oluşturmasını beklemiyorum.
Ara sunucu başlatıldığında, hedef URL ve bağlantı noktası .NET ASPNETCORE_URLS
ASPNETCORE_HTTPS_PORTS
ve tarafından ayarlanan ortam değişkenlerinden çıkarılır. URL'leri veya HTTPS bağlantı noktasını ayarlamak için ortam değişkenlerinden birini kullanın veya içindeki proxy.conf.json
değeri değiştirin.
.NET kodundan TypeScript koduna veri geçirme
SSR sırasında, ASP.NET Core uygulamanızdaki istek başına verileri Angular uygulamanıza geçirmek isteyebilirsiniz. Örneğin, veritabanından bilgi veya okunmuş bir şey geçirebilirsiniz cookie . Bunu yapmak için Başlangıç sınıfınızı düzenleyin. için UseSpaPrerendering
geri çağırmada için options.SupplyData
aşağıdaki gibi bir değer ayarlayın:
options.SupplyData = (context, data) =>
{
// Creates a new value called isHttpsRequest that's passed to TypeScript code
data["isHttpsRequest"] = context.Request.IsHttps;
};
SupplyData
Geri arama rastgele, istek başına, JSON serileştirilebilir verileri (örneğin, dizeler, boole'lar veya sayılar) geçirmenizi sağlar. Kodunuz main.server.ts
bunu olarak params.data
alır. Örneğin, önceki kod örneği geri çağırmaya createServerRenderer
boole değeri olarak params.data.isHttpsRequest
geçirir. Bunu, Angular tarafından desteklenen herhangi bir şekilde uygulamanızın diğer bölümlerine geçirebilirsiniz. Örneğin, değerini, oluşturucusunun BASE_URL
almak üzere bildirdiği herhangi bir bileşene nasıl main.server.ts
geçirdiğine bakın.
SSR'nin Dezavantajları
Tüm uygulamalar SSR'den yararlanmıyor. Birincil avantaj, algılanan performanstır. Uygulamanıza yavaş bir ağ bağlantısı üzerinden veya yavaş mobil cihazlardan ulaşan ziyaretçiler, JavaScript paketlerini getirmek veya ayrıştırmak biraz zaman alsa bile ilk kullanıcı arabirimini hızlı bir şekilde görür. Ancak, çoğu SPA genellikle uygulamanın neredeyse anında göründüğü hızlı bilgisayarlarda hızlı, iç şirket ağları üzerinden kullanılır.
Aynı zamanda SSR'yi etkinleştirmenin önemli dezavantajları da vardır. Geliştirme sürecinize karmaşıklık ekler. Kodunuzun iki farklı ortamda çalışması gerekir: istemci tarafı ve sunucu tarafı (ASP.NET Core'dan çağrılan bir Node.js ortamında). Aklınızda bulundurması gereken bazı şeyler şunlardır:
- SSR bir Node gerektirir.js yüklemesini seçin. Bu, Azure Uygulaması Hizmetleri gibi bazı dağıtım senaryolarında otomatik olarak geçerlidir ancak Azure Service Fabric gibi diğerleri için geçerli değildir.
- Derleme bayrağını
BuildServerSideRenderer
etkinleştirmek, node_modules dizininizin yayımlamasına neden olur. Bu klasör, dağıtım süresini artıran 20.000'den fazla dosya içerir. - Kodunuzu bir Node'da çalıştırmak için.js ortamı, veya
localStorage
gibiwindow
tarayıcıya özgü JavaScript API'lerinin varlığına dayanamaz. Kodunuz (veya başvurabileceğiniz bazı üçüncü taraf kitaplıkları) bu API'leri kullanmayı denerse, SSR sırasında bir hata alırsınız. Örneğin, birçok yerde tarayıcıya özgü API'lere başvuracağından jQuery kullanmayın. Hataları önlemek için SSR'yi veya tarayıcıya özgü API'leri veya kitaplıkları önlemeniz gerekir. Bu tür API'lere yapılan çağrıları, SSR sırasında çağrılmadığından emin olmak için denetimlerde sarmalayabilirsiniz. Örneğin, JavaScript veya TypeScript kodunda aşağıdaki gibi bir denetim kullanın:
if (typeof window !== 'undefined') {
// Call browser-specific APIs here
}
Için ara sunucu ara yazılımını yapılandırma SignalR
Daha fazla bilgi için bkz . http-proxy-ara yazılım.
Ek kaynaklar
ASP.NET Core