Was ist Angular?

Angular ist eines der beliebtesten und am häufigsten verwendeten JavaScript-Frameworks für die Erstellung von Single Page Applications. Es ist Open Source, steht unter der MIT Lizenz und wird aktiv von Google unterstützt.

Letzterer Fakt wird oft als Argument für die Nachhaltigkeit des Einsatzes von Angular als Framework herangezogen.

Angular bringt auch schon einen Satz von Material-Komponenten, wie beispielsweise Overlays, Sidebars, Switches und (fix positionierte) Navigationsleisten und Footer mit.

Andererseits hat sich das Angular(JS)-Framework in den letzten Jahren sehr stark weiterentwickelt und es gab immer wieder teils beträchtliche Designbrüche, was zu relativ hohen Migrations- und Refactoringaufwänden in Angularprojekten führte.

Der schnelle Einstieg

In den folgenden Kapiteln wird kurz umrissen, wie ein erstes Angular-Projekt erstellt werden kann.

Installiere Node.js und npm (den Package-Manager von Node) um die Voraussetzungen für die Entwicklung eines Angular-Projektes zu schaffen.

Stelle sicher, dass Du Node.js in der Version 8 oder größer und npm in der Version 5 oder größer installiert hast. Die Versionsinformation erhältst Du indem Du node -v und npm -v in einem Terminal Deiner Wahl eingibst.

Angular CLI ist ein Kommandozeileninterface, das benutzt werden kann, um Projekte zu erstellen, Dateien hinzuzufügen und diverse Entwicklungsaufgaben, wie Testen, Zusammenstellen (bundling) und Deployment durchzuführen.

Erstelle ein neues Projekt indem Du folgenden Code eingibst:

ng new my-app

Angular CLI installiert alle erforderlichen npm-Pakete und erstellt eine einfache Standardanwendung inklusive Konfiguration und Tests. Dieser Vorgang kann in Abhängigkeit zu der Geschwindigkeit Deiner Internetanbindung einige Zeit in Anspruch nehmen.

Wechsle in das Projektverzeichnis und führe die Anwendung aus.

cd my-app
ng serve --open

Das ng serve Kommando startet einen Webserver (node) der Deine Anwendung für den Browser zur Verfügung stellt. Es überwacht zudem die Dateien auf Änderungen und baut Deine Anwendung neu (rebuild) wenn Du Änderungen an der Dateien vornimmst.

Die Option --open sorgt dafür, dass Deine Anwendung in Deinem Browser unter der URL http://localhost:4200/ geöffnet wird.

Angular CLI hat bereits die erste Komponente für Dich erzeugt. Diese Komponente ist die Basiskomponente (root component) Deiner Anwendung. Der Name der Komponente ist app-root und kann in der Datei ./src/app/app.component.ts gefunden werden.

Öffne die Datei der Komponente und ändere die Titel-Eigenschaft von my-app auf Meine erste Angular-Anwendung

export class AppComponent {
  title = 'Meine erste Angular-Anwendung';
}

Du wirst feststellen, dass der Browser automatisch Deine Anwendung neu lädt und den angepassten Titel anzeigt.
Im selben Verzeichnis wurde zudem eine Stylesheetdatei app.component.css erstellt, in der Du das Aussehen Deiner Angular-Komponente anpassen kannst.

Dateiübersicht

Ein Angular CLI-Projekt eignet sich gut für schnelle Experimente ist aber auch eine solide Basis für Unternehmenslösungen.

Die erste Datei, die Du lesen solltest ist README.md. Sie enthält einige grundlegende Informationen zur Verwendung von CLI-Befehlen. Weitere Informationen gibt es im Angular CLI Repository und im Wiki.

Alle Dateien der Anwendung selbst befinden sich im Verzeichnis src (im Quellverzeichnis). Alle Angular-Komponenten, Templates, Styleinformationen, Bilder und alles weitere, was Bestandteil Deiner Anwendung ist, findest Du in diesem Verzeichnis.

Alle Dateien, die sich außerhalb dieses Verzeichnisses befinden, gehören nicht direkt zur Anwendung selbst, sondern unterstützen die Erstellung und das Deployment der Anwendung.

Datei Zweck
app/app.component.{ts,html,css,spec.ts} Die Komponente mit dem Namen AppComponent und zugehörige Dateien, im Einzelnen das HTML-Template, das Cascading Style Sheet und der Unittest der Komponente.
app/app.module.ts Definiert das Basismodul AppModule. Es bestimmt, wie die Anwendung zusammengesetzt ist.
assets/* Hier kann alles andere abgelegt werden, das mit der Anwendung ausgeliefert werden soll.
environments/* Dieser Ordner enthält eine Datei für jede Zielumgebung. Mögliche Zielumgebungen können zum Beispiel Entwicklung, Test, Akzeptanz und Produktion sein.

Jede der Dateien exportiert Konfigurationsvariablen die in der Anwendung verwendet werden können. Diese Dateien werden ersetzt, wenn die Anwendung gebaut wird.

browserslist Eine Liste mit den unterstützten Zielbrowsern
favicon.ico Das Icon der Anwendung
index.html Die zentrale HTML-Datei die ausgeliefert wird, wenn jemand die Anwendung aufruft. Es ist eher selten notwendig diese Datei anzupassen, da Angular CLI die <script>- und <link>-Tags automatisch anlegt.
karma.conf.js Die Unit-Test-Konfiguration für den Karma Test Runner. Dieser wird aufgerufen, wenn ng test ausgeführt wird.
main.ts Die zentrale Einstiegsdatei der Anwendung.
polyfills.ts

Die diversen Browser unterstützen abhängig von ihrer Version die Webstandards im unterschiedlichem Maße. Polyfills helfen dabei, diese Unterschiede auszugleichen.

Setze core-js und zone.js ein um einen weitestgehend einheitlichen Unterstützungsgrad zu erreichen. Detailierte Informationen bietet das Dokument Browserunterstützung auf der Angular-Seite.

styles.css Alle globalen Cascading Style Sheets (CSS) der Anwendung werden hier abgelegt. Styles die ausschließlich eine Komponente betreffen, solltest Du direkt im Verzeichnis der jeweiligen Komponente ablegen.
test.ts Dies ist der Einstiegspunkt für die Komponententests.
tsconfig.{app|spec}.json Die TypeScript-Compiler-Konfiguration für die Angular-App (tsconfig.app.json) und für die Unit-Tests (tsconfig.spec.json).
tslint.json Zusätzliche Linting-Konfiguration für TSLint zusammen mit Codelyzer, die bei der Ausführung von ng lint verwendet wird. Linting hilft den Codestil konsistent zu halten.

Der Ordner src/ ist nur eines der Elemente im Stammordner des Projekts. Andere Dateien helfen bei der Erstellung, Prüfung, Wartung, Dokumentation und Bereitstellung der App.

Datei Zweck
e2e/

Im Verzeichnis e2e/ liegen die End-to-End-Tests.

Das Angular-Team ist der Ansicht, dass diese Tests nicht innerhalb von src/ liegen sollten und begründet dies mit der Aussage, dass e2e Tests eine separate App darstellen, die quasi zufällig die Hauptanwendung testet. Deshalb haben die Ende-Zu-Ende-Tests auch ihre eigene tsconfig.e2e.json.

node_modules/ Node.js erstellt diesen Ordner und legt alle Module von Drittanbietern darin ab, die in der Datei package.json aufgeführt sind.
.editorconfig

Einfache Konfiguration für Deinen Editor, die sicherstellen soll, dass jeder der Dein Projekt verwendet die gleiche Grundkonfiguration benutzt. Die meisten Editoren unterstützen eine .editorconfig-Datei.

Weitere Informationen findest Du unter http://editorconfig.org

.gitignore Eine Git-Konfigurationsdatei, die sicherstellt, dass autogen erzeugte Dateien nicht an die Versionsverwaltung gebunden werden.
angular.json

Konfiguration für Angular CLI.

In dieser Datei können Standardeinstellungen vorgenommen werden und es kann festgelegt werden, welche Dateien beim Erstellen des Projekts enthalten sind.

package.json Eine npm-Konfigurationsdatei, die die im Projekt verwendeten Drittanbieterpakete auflistet. Hier können auch eigene benutzerdefinierte Skripte hinzugefügt werden.
protractor.conf.js Die End-to-End-Testkonfiguration für Protractor, die bei der Ausführung von ng e2e verwendet wird.
README.md Die Basisdokumentation des Projekts, die bei Erstellung des Projektes mit erzeugt wurde und Informationen darüber enthält, wie die App erzeugt und getestet werden kann. Es ist wichtig diese Datei aktuell zu halten, sodass jeder der das Projekt auscheckt, in die Lage versetzt wird die Anwendung zu erstellen.
tsconfig.json Konfigurationsdatei für den TypeScript-Compiler und die IDE, um bestmögliches Tooling zu gewährleisten.
tslint.json Linting-Konfiguration für TSLint zusammen mit Codelyzer, die bei der Ausführung von ng lint verwendet wird. Linting hilft den Codestil konsistent zu halten.

Alternativen

Populäre Alternativen (Stand 2018) sind unter anderem

React

Das vergleichsweise junge Framework React aus dem Jahre 2013 hat schnell seine Anhängerschaft gefunden.

React wurde ursprünglich von Facebook entwickelt und wird inzwischen von diversen größeren Firmen eingesetzt. Darunter sind unter anderem Atlassian, BBC, Coursera, Dropbox, Flipboard, Netflix, Paypal und WhatsApp. Sollten Ihnen die SPAs dieser Unternehmen gefallen, so ist vielleicht React das richtige Framework für Sie.

Vue.js

Vue.js gibt es seit 2016. Die Lernkurve ist im Vergleich zu anderen Frameworks relativ niedrig. Das Framework bietet unter anderem bidirektionales Data Binding und serverseitiges Rendering, ein Command Line Interface und (optionale) JSX-Unterstützung.

Es ist eines der am schnellstwachsenden Frameworks auf dem Markt.

Quellen

Ich habe beim Lernen folgende Quellen verwendet, die auch als Basis für die Erstellung dieses Dokumentes gedient haben:

Information

Dieses Dokument befindet sich in Arbeit.