Angular (web framework)

**Angular** ("*Angular 2+*" veya "*Angular CLI*" olarak da bilinir.), web uygulamaları geliştirmek için kullanılan açık kaynak ve özgür yazılım bir framework'tür. Google tarafından geliştirilmiş ve desteklenmektedir. İlk olarak 2010 yılında AngularJS adıyla piyasaya sürülen framework, 2016 yılında Angular 2 olarak yeniden tasarlanmış ve bu sürümle birlikte daha modern bir mimariye geçiş yapılmıştır. Angular, özellikle dinamik ve tek sayfa uygulamaları (SPA) oluşturmak için tercih edilmektedir.

Angular, MongoDB veritabanı, Express.js web uygulaması sunucusu çerçevesi, Angular'ın kendisi (veya AngularJS) ve Node.js çalışma ortamından oluşan MEAN yığınının ön ucu olarak kullanılır.

Angular, Google Cloud Platform ve Google Ads gibi uygulama ve sitelerin yanı sıra birçok dahili araçta da kullanılmaktadır.

## Angular'ın temel özellikleri

### Tek Sayfalık Uygulamalar (SPA)
Tek Sayfalık Uygulamalar (SPA), kullanıcıların bir web uygulamasını daha akıcı ve etkileşimli bir şekilde deneyimlemesine olanak tanıyan bir uygulama mimarisidir.

Bu tür uygulamalar, tüm içeriği tek bir HTML sayfasında yükler ve sayfa geçişlerini istemci tarafında *(client-side)* gerçekleştirir. Böylece, kullanıcının tarayıcıda farklı sayfalara geçiş yaparken yaşadığı yükleme süreleri minimize edilir.

### Model-Görünüm-Denetleyici (MVC) Mimarisi
Model-Görünüm-Denetleyici (MVC) Mimarisi, yazılım geliştirmede uygulama bileşenlerini organize etmek için yaygın olarak kullanılan bir mimaridir. MVC, uygulamaların yapılandırılmasında işlevselliği ve kullanıcı arayüzünü ayırarak geliştirme sürecini kolaylaştırır. Bu model, özellikle web uygulamaları için etkili bir yapı sunar.

### Çift Yönlü Veri Akışı (Two-Way Data Binding)
Çift Yönlü Veri Akışı (Two-Way Data Binding), genellikle form uygulamaları, anketler ve kullanıcı etkileşimlerinin yoğun olduğu web uygulamalarında kullanılır. Örneğin, Angular'da `ngModel` direktifi, çift yönlü veri akışını sağlamak için yaygın olarak kullanılır.

### Dependency Injection
Dependency Injection (Bağımlılık Enjeksiyonu), yazılım geliştirmede bileşenler arasındaki bağımlılıkları yönetmek için kullanılan bir yöntemdir. Bu yöntem, bileşenin ihtiyaç duyduğu bağımlılıkların (örneğin, sınıflar veya nesneler) dışarıdan sağlanmasını ifade eder. Böylece, bileşenler daha bağımsız hale gelir ve test edilebilirlikleri artar.

## Angular ve AngularJS arasındaki farklar
Google, Angular'ı AngularJS'nin baştan sona yeniden yazılması olarak tasarladı.

* Angular'ın kapsam () veya denetleyici kavramı yoktur; bunun yerine birincil mimari özelliği olarak bileşenler () hiyerarşisi kullanır.
* Angular, özellik bağlama () "[]" ve olay bağlama () "()" üzerine odaklanan farklı bir ifade sözdizimine sahiptir.
* Modülerlik – temel işlevlerin çoğu modüllere taşındı.
* Angular, Microsoft'un aşağıdaki özellikleri barındıran TypeScript dilinin kullanılmasını önerir: 
** Statik tipleme
** Ek açıklamalar ()
* TypeScript, ECMAScript 6'nın (ES6) bir üst kümesidir ve ECMAScript 5 ile geriye dönük olarak uyumludur.
* Eşzamansız şablon derlemeleri
* Sunucularda Angular uygulamaları çalıştıran Angular Universal desteği

## Ayrıca bakınız

* React (JavaScript kütüphanesi)
* Vue.js

## Kaynakça