Angular Rehberi: Modern Frontend Geliştirme İçin Kapsamlı Başlangıç
Yazar: Burak Balkı | Kategori: Frontend Development | Okuma Süresi: 10 dk
Bu kapsamlı Angular rehberi, yeni başlayanlar için kurulumdan bileşen mimarisine, veri bağlamadan API entegrasyonuna kadar tüm temel süreçleri teknik detayla...
## Angular Nedir: Kurumsal Web Geliştirmenin Standartı
**Angular**, Google tarafından geliştirilen ve bakımı yapılan, TypeScript tabanlı açık kaynaklı bir web uygulama çatısıdır (framework). Modern web dünyasında, özellikle büyük ölçekli ve karmaşık kurumsal uygulamalar geliştirmek için tercih edilen en güçlü araçlardan biridir. Angular, geliştiricilere **Single Page Application (SPA)** mimarisinde, yüksek performanslı ve sürdürülebilir uygulamalar inşa etmeleri için gerekli olan tüm araçları (routing, form yönetimi, HTTP istemcisi) kutudan çıktığı gibi sunar.
Angular'ı diğer kütüphanelerden ayıran en temel özellik, bir kütüphane değil, tam teşekküllü bir platform olmasıdır. Bu rehberde, Angular ekosistemine adım atacak ve profesyonel bir geliştirme ortamının nasıl kurulacağını öğreneceğiz.
## Temel Kavramlar: Bileşen Tabanlı Mimari ve TypeScript
Angular mimarisi, modülerlik ve yeniden kullanılabilirlik üzerine kuruludur. Uygulamanın her bir parçası birer **Component** (bileşen) olarak tasarlanır.
- **TypeScript:** Angular, JavaScript'in üzerine inşa edilmiş olan TypeScript dilini kullanır. Statik tipleme, sınıflar ve arayüzler sayesinde kodun daha güvenli ve okunabilir olmasını sağlar.
- **Modules (NgModules):** Uygulamanın mantıksal parçalarını bir araya getiren konteynerlerdir.
- **Templates:** Bileşenin kullanıcı arayüzünü tanımlayan HTML dosyalarıdır.
- **Metadata:** Angular'a bir sınıfın nasıl işlenmesi gerektiğini söyleyen dekoratörlerdir (Örn: `@Component`).
| Kavram | Açıklama |
| :--- | :--- |
| Component | UI ve mantığı birleştiren temel yapı taşı |
| Directive | DOM öğelerinin davranışını veya görünümünü değiştiren yapılar |
| Service | Veri paylaşımı ve iş mantığı için kullanılan sınıflar |
| Pipe | Veriyi şablonda görüntülemeden önce dönüştüren araçlar |
## Geliştirme Ortamının Hazırlanması ve Kurulum
Angular ile geliştirmeye başlamadan önce sisteminizde **Node.js** ve **npm** (Node Package Manager) kurulu olmalıdır. Angular CLI (Command Line Interface), proje oluşturma, bileşen ekleme ve test süreçlerini otomatize eden kritik bir araçtır.
### 1. Angular CLI Kurulumu
Terminalinizi açın ve aşağıdaki komutu çalıştırarak Angular CLI'yı küresel olarak yükleyin:
```bash
npm install -g @angular/cli
```
### 2. Yeni Bir Proje Oluşturma
Kurulum tamamlandıktan sonra ilk projenizi şu komutla oluşturabilirsiniz:
```bash
ng new ilk-angular-projem
```
> **Not:** Bu aşamada CLI size 'Routing' eklemek isteyip istemediğinizi ve hangi CSS formatını (CSS, SCSS, SASS) kullanacağınızı soracaktır. Başlangıç için 'Yes' ve 'SCSS' seçilmesi önerilir.
### 3. Uygulamayı Çalıştırma
Proje klasörüne gidin ve yerel geliştirme sunucusunu başlatın:
```bash
cd ilk-angular-projem
ng serve --open
```
## Bileşen (Component) Yapısını Anlamak
Bir Angular bileşeni üç ana dosyadan oluşur: Mantık (TS), Görünüm (HTML) ve Stil (CSS/SCSS). `@Component` dekoratörü bu dosyaları birbirine bağlar.
```typescript
import { Component } from '@angular/core';
@Component({
selector: 'app-merhaba',
templateUrl: './merhaba.component.html',
styleUrls: ['./merhaba.component.scss']
})
export class MerhabaComponent {
baslik: string = 'Angular Dünyasına Hoş Geldiniz!';
}
```
## Veri Bağlama (Data Binding) Teknikleri
Angular, bileşen sınıfı ile şablon arasındaki veri iletişimini dört farklı yöntemle sağlar:
### 1. Interpolation (Ekleme)
Class içerisindeki bir değişkeni HTML'de göstermek için kullanılır.
```html
```
### 3. Event Binding
Kullanıcı etkileşimlerini (tıklama, yazma vb.) yakalamak için kullanılır.
```html
```
### 4. Two-Way Binding
Verinin hem class'tan HTML'e hem de HTML'den class'a çift yönlü akmasını sağlar. Genellikle formlarda kullanılır.
```html
Lütfen giriş yapın.
```
### *ngFor Kullanımı
Bir liste üzerinde dönerek tekrarlayan elementler oluşturur.
```html
```
## HTTP İstekleri ve API Entegrasyonu
Angular, backend servisleri ile iletişim kurmak için `HttpClientModule` sunar. Bu modül RxJS tabanlı **Observables** yapısını kullanır.
```typescript
import { HttpClient } from '@angular/common/http';
@Injectable()
export class ApiService {
constructor(private http: HttpClient) {}
getUsers() {
return this.http.get('https://api.example.com/users');
}
}
```
## Best Practices: Profesyonel Angular Geliştirme İpuçları
1. **Modüler Mimari:** Uygulamayı küçük, yönetilebilir özellik modüllerine (Feature Modules) bölün.
2. **Lazy Loading:** Tüm uygulamayı tek seferde yüklemek yerine, modülleri sadece ihtiyaç duyulduğunda yükleyerek açılış hızını artırın.
3. **OnPush Change Detection:** Performans için bileşenlerde `ChangeDetectionStrategy.OnPush` kullanmayı değerlendirin.
4. **Unsubscribe:** Bellek sızıntılarını önlemek için Observable aboneliklerini `ngOnDestroy` aşamasında mutlaka sonlandırın.
5. **Strict Typing:** TypeScript'in gücünden yararlanın, `any` tipini kullanmaktan kaçının.
## Sık Yapılan Hatalar
- **DOM Manipülasyonu:** Doğrudan JavaScript veya jQuery ile DOM'a müdahale etmek Angular'ın state yönetimini bozar. Bunun yerine Renderer2 veya direktifleri kullanın.
- **Büyük Bileşenler:** Tek bir bileşene binlerce satır kod yazmak sürdürülebilirliği yok eder. Bileşenleri atomik parçalara ayırın.
- **Nested Subscriptions:** İç içe `subscribe` kullanmak yerine RxJS operatörlerini (switchMap, mergeMap) tercih edin.
## Performans Optimizasyonu
Angular uygulamalarını optimize etmek için **Ivy** render motoru avantajlarından yararlanın. Ayrıca, `trackBy` fonksiyonunu `*ngFor` ile kullanarak liste güncellemelerinde DOM'un sadece değişen kısımlarının render edilmesini sağlayın.
```html
{{ item.name }}
```
## Sık Sorulan Sorular (SSS)
**1. Angular ve AngularJS arasındaki fark nedir?**
AngularJS (v1.x) JavaScript tabanlıdır, Angular (v2+) ise tamamen yeniden yazılmış ve TypeScript tabanlı bir mimariye sahiptir. İkisi birbirinden tamamen farklıdır.
**2. Angular öğrenmek için JavaScript bilmek şart mı?**
Evet, Angular TypeScript kullansa da temel JavaScript (ES6+) kavramlarına hakim olmak öğrenme sürecini hızlandırır.
**3. Angular SEO dostu mu?**
Varsayılan olarak SPA'lar SEO zorlukları yaşayabilir ancak **Angular Universal** (Server-Side Rendering) kullanarak SEO uyumlu, hızlı yüklenen sayfalar oluşturulabilir.
**4. RxJS nedir ve neden önemlidir?**
RxJS, asenkron veri akışlarını yönetmek için kullanılan bir kütüphanedir. Angular'ın HTTP ve Event sisteminin kalbinde yer alır.
**5. Küçük projeler için Angular uygun mu?**
Angular oldukça kapsamlı bir framework olduğu için çok küçük projelerde gereksiz karmaşıklık yaratabilir; ancak ölçeklenebilirlik hedefleniyorsa her zaman iyi bir tercihtir.
## Özet ve Sonuç
Angular, kurumsal düzeyde web uygulamaları geliştirmek için sunduğu disiplinli yapı, güçlü CLI desteği ve geniş ekosistemi ile rakipsizdir. Bu rehberde öğrendiğiniz temel kavramlar, kurulum adımları ve veri bağlama teknikleri, profesyonel bir Angular geliştiricisi olma yolundaki ilk sağlam adımlarınızdır. Unutmayın, Angular öğrenmek bir maratondur; pratik yaparak ve resmi dokümantasyonu takip ederek yetkinliğinizi artırabilirsiniz.
{{ baslik }}
``` ### 2. Property Binding HTML elementlerinin özelliklerini dinamik olarak ayarlamak için kullanılır. ```htmlMerhaba, {{ kullaniciAdi }}!
``` ## Direktifler (Directives) ile Dinamik İçerik Direktifler, DOM yapısını manipüle etmemizi sağlar. En yaygın kullanılan yapısal direktifler şunlardır: ### *ngIf Kullanımı Koşula bağlı olarak bir elementi DOM'a ekler veya çıkarır. ```html
Kullanıcı paneline hoş geldiniz.
- {{ urun.ad }} - {{ urun.fiyat | currency }}