Angular je javascriptový webový Framework. Zaměřuje se na tvorbu jednostránkových aplikací. Takové aplikace jsou vytvořeny za pomoci HTML kódu, do nějž jsou vloženy speciální formátovací značky, které následně určují, jaké operace či data mají být na dané místo vloženy. Angular je volně dostupný pod MIT licencí. V současnosti je největším přispěvatelem společnost Google, která byla jeho zakladatelem v roce 2009.
Angular byl navržen tak, aby umožňoval tvůrcům stránek oddělovat zobrazovací logiku od aplikační logiky aniž by měli větší znalosti programování. Za tímto účelem Angular využívá návrhový vzor Model-View-Controller nebo alternativní Model-View-ViewModel. Za pomoci tohoto abstraktního oddělení je většina aplikační logiky obsažena v modelu nebo controlleru. Daný model nebo controller je následně vložen do $scope dané view šablony. Ta pak může používat definované proměnně a s využitím speciálních direktiv je vypisovat i s nimi jakýmkoliv jiným způsobem manipulovat.
Angular zároveň hlídá změny, které probíhají na proměnných definovaných pro daný $scope. To je možné díky použití takzvaného dirty-checkingu, který má na starost kontrolu, zda se nová hodnota neliší od staré. Za situace, kdy se hodnota proměnné změnila, Angular ověří, že je opravdu potřeba změnit DOM a následně aktualizuje view template do nejnovějšího stavu. Daná funkcionalita přispívá k tomu, že není potřeba se starat o opětovné vykreslování a hlídání změn a postačí se zaměřit výhradně na výsledný vzhled aplikace.
Angular používá vlastní implementaci scope. Ten díky tomu drží reference na veškeré aktuální proměnné, jenž jsou na něm definovány a zároveň na části DOM, se kterým v dané chvíli pracuje. Přístup zajišťuje proměnná $scope, která je definovaná v controlleru.
Angular využívá pro práci controllery. Každý z nich je připojen k HTML DOMu za pomoci direktivy ng-controller. Každý z controllerů má pro svou práci vlastní $scope. V něm má uloženy hodnoty a objekty, se kterými pak může pracovat.
Controllery se využívají pro:
Pro ostatní případy mají být využívány specializované komponenty Angular. Ty pak umožňují komunikaci mezi controllerem a view modelem.