Paketmanager
Ohne abhängige Fremdbibliotheken geht es einfach heute nicht mehr, deshalb wird ein gemeinsames Repository benötigt aus denen man bequem die Abhängigkeiten einbinden kann, äquivalent zu
Npm
Npm wird bei der Installation von NodeJS mitinstalliert. Um die Version zu aktualisieren kann folgender Befehl ausgeführt werden.
npm install -g npm
Yarn
Yarn ist ein alternativer Paketmanager der von Facebook entwickelt wurde und aufgrund persönlicher Vorlieben hier für die Dokumentation benutzt wird. Mittlerweile dürfte NPM alles bieten was Yarn auch kann im Bezug auf Security, Offlinefunktionalität, Lockdatei... Jedenfalls war Yarn eine Zeit lang NPM voraus und zu dieser Zeit habe ich mich an Yarn gewöhnt. Natürlich kann alles auch mit NPM installiert und gebaut werden.
npm install -g yarn
Angular CLI
Über das Command-Line-Interface lässt sich hervorragend Code generieren, das sowohl zum Anlegen einer kompletten Projektstruktur dient, als auch für einzelne Klassen, Services, Komponenten, usw. bis hin zu einem Updatemechanismus für die Abhängigen Frontend-Bibliotheken.
yarn global add @angular/cli
Wenn das CLI Yarn als Paketmanager nutzen soll, kann man das mit folgendem Befehl festlegen.
ng config -g cli.packageManager yarn
Projekt erstellen
Um das CLI zu benutzen ist der Befehl ng auf der Konsole verfügbar.
ng new PROJEKTNAME
Damit wird eine komplette Projektstruktur erzeugt mit dem Standard Angular-Beispielprojekt. Einige Prompts fragen euch ob z.B. ein Routermodul angelegt werden soll, oder welche Styles ihr benutzen möchtet. Wählt dort unbedingt
Abhängigkeiten hinzufügen
mit yarn add NAME können Abhängigkeiten hinzugefügt werden. Mit dem zusätzlichen Parameter --dev werden die Abhängigkeiten nur für den Build-Prozess zur Verfügung gestellt und für den laufenden Betrieb nicht benötigt.
Folgende Abhängigkeiten kann ich nur wärmstens empfehlen: Bootstrap, Angular Material, Moment.js, Font-Awesome und D3.
yarn add @fortawesome/fontawesome-free yarn add bootstrap jquery popper.js yarn add d3 yarn add moment yarn add @types/d3 --dev ng add @angular/material
Um Bootstrap und Fontawesome nutzen zu können, müssen die Abhängigkeiten dann noch zusätzlich importiert werden. Das kann folgendermaßen in der angular.json Datei eingetragen werden:
"styles": [ "node_modules/@fortawesome/fontawesome-free/css/all.min.css", "node_modules/bootstrap/dist/css/bootstrap.min.css" ],
Mit Angular Universal wird einem das serverseitige Vorrendern des statischen HTML‘s kinderleicht gemacht. Mit ng add @nguniversal/express-engine werden alle notwendigen Konfigurationen inkl. Bau- und Start-Skripte von der CLI generiert und wenn man das Routing-Modul benutzt kann man sogar das “prerender“ nutzen, das von allen Seiten eine fertige statische Version baut. Für SEO-Abhängige Webseiten ein unverzichtbares muss, aber auch die Performance wird dadurch nochmal stark verbessert. Mit yarn build:ssr && yarn serve:ssr wird der Node-Server gestartet, der das statische HTML vorrendert und mit yarn prerender wird der build-Prozess gestartet, der statische HTML-Dateien mit der Verzeichnisstruktur der URL's erstellt.
Um alle Abhängigkeiten zu installieren kann man mit folgendem Befehl, im Hauptverzeichnis indem auch die package.json Datei liegt, den Prozess starten.
yarn install
Projekt starten
Um seine Angular-app zu starten muss man dann nur noch folgenden Befehl eingeben und los gehts.
ng serve
Fazit
So wie diese Seite selbst in Angular geschrieben ist, würde ich jeder Zeit Angular für Webanwendungen empfehlen. Die Wiederverwendbarkeit und Konfigurierbarkeit der Komponenten sind einfach beispiellos. Ich mache mir hier jedoch nicht die Mühe und schreibe ein Tutorial wie man mit Komponenten, Services, Modulen und dem Routing... umgeht, denn dafür gibt es unendlich viel gute Dokumentationen im Netz. Den besten ersten Einstiegspunkt bietet da die offizielle Seite von Angular selbst. Alle weiteren Artikel mit und über Angular werde ich ganz konkreten Problemstellungen und eleganten Lösungen dafür widmen.