# Angular

## Was ist Angular?

<figure><img src="https://1951332971-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfaRLpqjavHkOOr8FPTA1%2Fuploads%2FHRggMseF12KvQFzFhrKh%2Fangular-web-framework.jpg?alt=media&#x26;token=168426e1-83ce-44f6-bee2-b77249e9f5de" alt=""><figcaption></figcaption></figure>

[Angular](https://angular.io/) ist ein Open-Source TypeScript basiertes Frontend Framework, welches von Google gesponsert und Unterhalten wird.

In Angular werden mit HTML-Code deklarativ die Oberflächen gestaltet. Ein wichtiger Aspekt ist, dass Anwendungslogik nur in den TypeScript-Dateien definiert wird. Dieser sollte möglichst unabhängig von der Oberfläche sein. Im Gegensatz zu manch anderen MVC-Frameworks erweitert Angular den HTML-Code aber nur, anstatt ihn zu abstrahieren.\
Schon an diesem simplen Beispiel zeigt sich die Leichtigkeit von Angular. Der HTML Code ist einfach zu verstehen, enthält jedoch keine Logik. Durch das von Angular kontrollierte Binding ändert sich die Anzeige in Zeile 6, sobald in Zeile 5 ein Wert geändert wird. Der vergleichbare jQuery Code wäre deutlich länger!

```html
<div>
  <span>Anzahl Elemente: {{list.length}} </span>
  <ul>
    @for(let element of list; track list) {
      <li>
        <input type="text" [(ngModel)]="element.text">
        <span>{{element.text}}</span>
      </li>
    }
  </ul>
</div>
```

Dazugehöriger Controller:

```typescript
export class ElementComponent {
    list: Framework[] = [
    {text:'angularjs'},
    {text:'jQuery'}];
}
```

## Funktionsweise einer Single Page Applikation

<figure><img src="https://1951332971-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfaRLpqjavHkOOr8FPTA1%2Fuploads%2FWP3xTFkWpvZBPej1Wwnk%2Fassets_-LB2Pij5al0zyqCKEUsZ_-LEjdqkoI9w29VTqw2VQ_-LEjdsNd754paTU-UA6w_SinglePage_Lifecycle.png?alt=media&#x26;token=cf54f3f1-717d-4a09-b729-9419f5ab214c" alt=""><figcaption></figcaption></figure>

### **Vorteil einer Single Page Applikation**

* Gesamte Applikations-Logik im Browser
* Hohe Geschwindigkeit durch Wegfall langer Ladezyklen
* App-Feeling durch schnelle dynamische Inhaltsanpassungen
* Tiefes zu übertragendes Datenvolumen, mit einhergehendem Performance-Vorteil bei Mobile-Webapplikationen.

### Geschichte von Angular

AngularJS v1.x wurde nicht für den mobilen Einsatz gebaut, Angular (> v2) hingegen schon. Angular ist durch eine hierarchische Dependency Injection um einiges schneller als AngularJS und ein grosses Update.\
Hier weitere wichtige Vorteile von Version > 2.0:

* Komponenten basierte Programmierung
* Ist ein Framework
* Verwendet TypeScript
* Verwendet component und directives
* Etwas kompliziertes mit Aufwand verbundenes Setup, da Abhängigkeiten zu Bibliotheken bestehen
* Verwendet camelCase, z.B. ngModel
