Angular Proje Yapısı ve Konfigürasyonu
Bu bölümde, e-ticaret uygulamasının frontend kısmı için Angular proje yapısını ve konfigürasyonunu detaylı olarak ele alacağız. Angular, Google tarafından geliştirilen, TypeScript tabanlı bir frontend framework’üdür ve modern, tek sayfalı uygulamalar (SPA) geliştirmek için kullanılır.Angular Nedir?
Angular, modern web uygulamaları geliştirmek için kullanılan güçlü bir JavaScript framework’üdür. Angular, komponent tabanlı bir mimari, güçlü bir şablon sistemi, bağımlılık enjeksiyonu, reaktif programlama ve kapsamlı bir CLI (Command Line Interface) gibi özellikler sunar. Angular’ın bazı temel özellikleri şunlardır:- Komponent Tabanlı Mimari: Uygulamanın kullanıcı arayüzü, yeniden kullanılabilir ve bağımsız komponentlerden oluşur.
- TypeScript Desteği: Angular, TypeScript ile yazılır ve güçlü tip kontrolü sağlar.
- Reaktif Programlama: RxJS kütüphanesi ile asenkron işlemleri yönetir.
- Bağımlılık Enjeksiyonu: Uygulamanın farklı parçaları arasında bağımlılıkları yönetir.
- Routing: Tek sayfalı uygulamalarda sayfa geçişlerini yönetir.
- Form Yönetimi: Reaktif formlar ve şablon tabanlı formlar ile form işlemlerini yönetir.
- HTTP İstemcisi: Backend API’leri ile iletişim kurmak için HTTP istemcisi sağlar.
Angular CLI Kurulumu
Angular CLI (Command Line Interface), Angular uygulamaları oluşturmak, geliştirmek ve yönetmek için kullanılan bir komut satırı aracıdır. Angular CLI, yeni projeler oluşturma, komponentler, servisler ve diğer Angular yapıları oluşturma, uygulamayı derleme, test etme ve dağıtma gibi işlemleri kolaylaştırır. Angular CLI’yi kurmak için, Node.js ve npm’in (Node Package Manager) yüklü olması gerekir. Node.js ve npm kurulduktan sonra, aşağıdaki komutu kullanarak Angular CLI’yi global olarak kurabilirsiniz:Yeni Bir Angular Projesi Oluşturma
Angular CLI kullanarak yeni bir Angular projesi oluşturmak için, aşağıdaki komutu kullanabilirsiniz:- Routing: Angular routing modülünü eklemek isteyip istemediğinizi sorar. E-ticaret uygulaması için routing gerekli olduğundan, “y” (evet) cevabını vermelisiniz.
- Stylesheet Format: CSS, SCSS, Sass, Less veya Stylus gibi stil formatlarından birini seçmenizi ister. E-ticaret uygulaması için SCSS kullanacağız, bu nedenle “SCSS” seçeneğini seçmelisiniz.
ng serve komutu, uygulamayı derler ve bir geliştirme sunucusu başlatır. Varsayılan olarak, uygulama http://localhost:4200/ adresinde çalışır.
Angular Proje Yapısı
Angular projesi oluşturulduktan sonra, proje dizininde aşağıdaki dosya ve klasörleri göreceksiniz:src/ Klasörü
src/ klasörü, uygulamanın kaynak kodunu içerir. Bu klasör, aşağıdaki alt klasör ve dosyaları içerir:
app/ Klasörü
app/ klasörü, uygulamanın ana komponentlerini ve modüllerini içerir. Bu klasör, aşağıdaki dosyaları içerir:
- app-routing.module.ts: Uygulamanın routing yapılandırmasını içerir.
- app.component.html: Ana komponentin HTML şablonunu içerir.
- app.component.scss: Ana komponentin stil dosyasını içerir.
- app.component.spec.ts: Ana komponentin test dosyasını içerir.
- app.component.ts: Ana komponentin TypeScript kodunu içerir.
- app.module.ts: Uygulamanın ana modülünü içerir.
assets/ Klasörü
assets/ klasörü, uygulamanın statik dosyalarını (resimler, fontlar, vb.) içerir.
environments/ Klasörü
environments/ klasörü, farklı ortamlar (geliştirme, üretim, vb.) için yapılandırma dosyalarını içerir.
- environment.ts: Geliştirme ortamı için yapılandırma dosyası.
- environment.prod.ts: Üretim ortamı için yapılandırma dosyası.
Diğer Dosyalar
- index.html: Uygulamanın ana HTML dosyası.
- main.ts: Uygulamanın başlangıç noktası.
- polyfills.ts: Eski tarayıcılar için polyfill’leri içerir.
- styles.scss: Uygulamanın global stil dosyası.
- test.ts: Test yapılandırma dosyası.
Konfigürasyon Dosyaları
Proje kök dizininde, çeşitli konfigürasyon dosyaları bulunur:- angular.json: Angular CLI yapılandırma dosyası.
- package.json: npm paket bağımlılıklarını ve betikleri içerir.
- tsconfig.json: TypeScript derleyici yapılandırma dosyası.
- .editorconfig: Editör yapılandırma dosyası.
- .gitignore: Git tarafından yok sayılacak dosyaları belirtir.
- karma.conf.js: Karma test koşucusu yapılandırma dosyası.
E-Ticaret Uygulaması için Proje Yapısı
E-ticaret uygulaması için, daha organize bir proje yapısı oluşturmak istiyoruz. Bu yapı, uygulamanın farklı bileşenlerini mantıksal olarak gruplandıracak ve kodun bakımını kolaylaştıracaktır. Aşağıdaki klasör yapısını oluşturacağız:Core Modülü
core/ klasörü, uygulamanın çekirdek işlevselliğini içerir. Bu klasör, aşağıdaki alt klasörleri içerir:
- auth/: Kimlik doğrulama ile ilgili sınıfları içerir.
- guards/: Route guard’ları içerir.
- interceptors/: HTTP interceptor’ları içerir.
- models/: Veri modellerini içerir.
- services/: Servis sınıflarını içerir.
AppModule tarafından yalnızca bir kez import edilmelidir.
Features Modülü
features/ klasörü, uygulamanın farklı özelliklerini içerir. Her özellik, kendi modülü, komponentleri, servisleri ve diğer dosyaları ile birlikte kendi klasöründe bulunur. Bu klasör, aşağıdaki alt klasörleri içerir:
- admin/: Admin paneli ile ilgili komponentleri içerir.
- auth/: Kimlik doğrulama sayfaları ile ilgili komponentleri içerir.
- cart/: Alışveriş sepeti ile ilgili komponentleri içerir.
- checkout/: Ödeme sayfası ile ilgili komponentleri içerir.
- home/: Ana sayfa ile ilgili komponentleri içerir.
- product/: Ürün sayfaları ile ilgili komponentleri içerir.
- profile/: Kullanıcı profili ile ilgili komponentleri içerir.
- shared/: Özellikler arasında paylaşılan komponentleri içerir.
Shared Modülü
shared/ klasörü, uygulamanın farklı bölümleri arasında paylaşılan komponentleri, direktifleri ve pipe’ları içerir. Bu klasör, aşağıdaki alt klasörleri içerir:
- components/: Paylaşılan komponentleri içerir.
- directives/: Paylaşılan direktifleri içerir.
- pipes/: Paylaşılan pipe’ları içerir.
Angular Modülleri
Angular modülleri, uygulamanın farklı parçalarını organize etmek için kullanılır. Her modül, komponentleri, direktifleri, pipe’ları ve servisleri gruplandırır.AppModule
AppModule, uygulamanın ana modülüdür ve uygulamanın başlangıç noktasıdır. Bu modül, app.module.ts dosyasında tanımlanır ve aşağıdaki gibi görünür:
CoreModule
CoreModule, uygulamanın çekirdek işlevselliğini içerir ve yalnızca bir kez yüklenir. Bu modül, core.module.ts dosyasında tanımlanır ve aşağıdaki gibi görünür:
SharedModule
SharedModule, uygulamanın farklı bölümleri arasında paylaşılan komponentleri, direktifleri ve pipe’ları içerir. Bu modül, shared.module.ts dosyasında tanımlanır ve aşağıdaki gibi görünür:
Feature Modülleri
Her özellik için ayrı bir modül oluşturacağız. Örneğin, ürün modülü aşağıdaki gibi görünebilir:Angular Routing
Angular Routing, tek sayfalı uygulamalarda sayfa geçişlerini yönetmek için kullanılır. Routing, URL’ye göre hangi komponentin görüntüleneceğini belirler.AppRoutingModule
AppRoutingModule, uygulamanın ana routing yapılandırmasını içerir. Bu modül, app-routing.module.ts dosyasında tanımlanır ve aşağıdaki gibi görünür:
Route Guards
Route guard’lar, belirli route’lara erişimi kontrol etmek için kullanılır. Örneğin,AuthGuard kimlik doğrulaması gerektiren route’ları korur ve kullanıcı oturum açmamışsa, kullanıcıyı oturum açma sayfasına yönlendirir.
Ortam Yapılandırması
Angular, farklı ortamlar (geliştirme, üretim, vb.) için farklı yapılandırmalar sağlar. Bu yapılandırmalar,environments/ klasöründeki dosyalarda tanımlanır.
environment.ts
environment.ts dosyası, geliştirme ortamı için yapılandırma değerlerini içerir:
environment.prod.ts
environment.prod.ts dosyası, üretim ortamı için yapılandırma değerlerini içerir:
Angular CLI Komutları
Angular CLI, çeşitli komutlar sağlar ve bu komutlar, Angular uygulamaları geliştirirken sıkça kullanılır. İşte bazı yaygın Angular CLI komutları:Yeni Bir Komponent Oluşturma
features/product/ klasöründe product-list adında yeni bir komponent oluşturur.
Yeni Bir Servis Oluşturma
core/services/ klasöründe product adında yeni bir servis oluşturur.
Yeni Bir Modül Oluşturma
features/ klasöründe product adında yeni bir modül oluşturur ve bir routing modülü ekler.
Uygulamayı Derleme
dist/ klasöründe çıktı oluşturur.
Uygulamayı Üretim İçin Derleme
dist/ klasöründe optimize edilmiş çıktı oluşturur.
Uygulamayı Çalıştırma
http://localhost:4200/ adresinde çalışır.
Testleri Çalıştırma
End-to-End Testleri Çalıştırma
Bağımlılıklar ve Paketler
E-ticaret uygulaması için, çeşitli Angular paketleri ve üçüncü taraf kütüphaneleri kullanacağız. Bu paketler,package.json dosyasında listelenir ve npm install komutu ile kurulur.
Angular Paketleri
Üçüncü Taraf Kütüphaneleri
Angular Material Kurulumu
Angular Material, Material Design bileşenlerini Angular uygulamaları için sağlayan bir UI kütüphanesidir. Angular Material’i kurmak için, aşağıdaki komutu kullanabilirsiniz:- Theme: Kullanmak istediğiniz temayı seçmenizi ister. E-ticaret uygulaması için “Indigo/Pink” temasını seçebilirsiniz.
- Typography: Global tipografi stillerini uygulamak isteyip istemediğinizi sorar. “Y” (evet) cevabını verebilirsiniz.
- Browser Animations: Tarayıcı animasyonlarını etkinleştirmek isteyip istemediğinizi sorar. “Y” (evet) cevabını verebilirsiniz.
app.module.ts dosyasına gerekli modülleri import etmeniz gerekir:
Bootstrap Kurulumu
Bootstrap, responsive web siteleri ve uygulamaları geliştirmek için kullanılan popüler bir CSS framework’üdür. Bootstrap’i kurmak için, aşağıdaki komutu kullanabilirsiniz:angular.json dosyasındaki styles ve scripts dizilerine Bootstrap dosyalarını eklemeniz gerekir:
Font Awesome Kurulumu
Font Awesome, web uygulamalarında kullanılan popüler bir ikon kütüphanesidir. Font Awesome’ı kurmak için, aşağıdaki komutu kullanabilirsiniz:angular.json dosyasındaki styles dizisine Font Awesome CSS dosyasını eklemeniz gerekir: