Hinweis: Dieser Blogbeitrag stammt aus der Zeit vor dem Zusammenschluss und wurde von ARS realisiert – heute Teil von ATVANTAGE. Unsere Erfahrung bleibt – nur unser Name hat sich geändert. Hier finden Sie weitere Informationen rund um die Fusion.

Lesezeit: 3 Minuten

 

   Hurra, hurra - Angular Version 17 ist da!  

Mit dem neuen Release Cycle von Angular können wir uns alle sechs Monate auf eine neue Version von Angular freuen. Und diese Woche ist es wieder so weit: Angular Version 17 wird veröffentlicht!

In den letzten sechs Monaten hat das Angular Team fleißig an neuen Features und Verbesserungen gearbeitet, um Entwickler:innen das Leben einfacher zu machen und das Framework noch robuster und schneller.

Hier die Highlights im Überblick:

  • Neue deklarative Control Flow Syntax
  • Deferred Loading
  • Signals sind Production ready
  • Typescript 5.2
    • Schnelleres Rekursives Type Checking
    • Immutable Array Methoden 
    • Using Keyword
  • NodeJS > 18.13.0
  • Automatisches Entfernen von CSS
  • Fehlernachrichten in der Konsole, wenn lazy geladene Bilder das Rendering verlangsamen
  • Support für die Transitions API
  • Verbesserungen für SSR & ApplicationBuilder
     

Neue deklarative Control Flow Syntax

Diese ist die größte visuelle Änderung der Template Syntax, die es seit dem ersten Release von Angular gab. Wie der Name schon vermuten lässt, betrifft das Update die bisherige Direktiven-basierte Syntax: (*ngFor, *ngIf & ngSwitch). Die alte Syntax wurde durch die neue "@" Syntax ersetzt: (@for, @if & @switch).

Das Update bringt nicht nur eine neue Schreibweise mit sich, sondern auch neue Features:

 

Dank der neuen Syntax kann man nun auf ng-container und ng-template verzichten und dadurch den Code reduzieren. Es gibt bereits eine integrierte Track-Funktion, sodass man keine eigene mehr schreiben muss. Der @empty Block wird automatisch verwendet, falls keine Daten vorhanden sind.

Ein "Real World"-Vergleich der alten (links) & neuen Syntax (rechts):

   

Im obigen Beispiel verwenden wir wie bisher ng-template und ng-container sowie zwei Nullprüfungen (das erste Mal für das Observable und das zweite Mal, falls die Liste leer ist).

Dank der neuen Syntax (unten) entfällt die Notwendigkeit einer Nullprüfung für die Liste (dies übernimmt der @empty-Block) und wir können zusätzlichen Boilerplate-Code im Template vermeiden. Zusätzlich wird im @for-Block die Verwendung der track-Funktion vorgegeben, was positive Auswirkungen auf die Performance hat.

Deferred Loading

Eine weitere spannende Neuerung, die sich auf das Template auswirkt, ist das Deferred Loading. Frühere Versionen von Angular haben bereits die Möglichkeit geboten, Teile der App nachträglich zu laden und nicht alles auf einmal beim initialen Aufrufen der Seite. Allerdings konnte dies bisher nur über das Routing umgesetzt werden. Mit dem neuesten Update von Angular gibt es jetzt den neuen @defer-Block, der es ermöglicht, Teile des Templates erst dann nachzuladen, wenn sie benötigt werden. Auch sämtliche Abhängigkeiten des Code-Blocks, der lazy geladen wird, wie Direktiven, Komponenten oder Pipes, werden ebenfalls im lazy-Modus geladen.

In den folgenden Beispielen zeigen wir die Eigenschaften und Möglichkeiten des @defer-Blocks:

Eigene Logik

Im ersten Beispiel verwenden wir eigene Logik, um die Komponente "app-defered" lazy zu laden. Die Komponente im @defer-Block wird erst geladen, wenn die checkbox angeklickt wurde. Neben dem l@defer-Block gibt es noch drei weitere: 

  • @placeholder:  wird Initial geladen, vor dem @defer-Block
  • @error: falls beim Laden des @defer-Blocks Fehler aufkommen, wird dieser dann angezeigt
  • @loading: wird temporär angezeigt beim Laden des @defer-Blocks

Bei der Verwendung von @defer sind @placeholder, @error & @loading zwar optional, aber sie können äußerst nützlich sein und viel Boilerplate-Code einsparen.

On Interaction

Angular rendert den @defer-Block, wenn es eine Interaktion mit dem @placeholder Element gab. Interaktionen können verschiedene Events sein wie: click, touch focus, keypress usw.

On Hover

Angular rendert den @defer-Block wenn der User mit der Maus über den @placeholder hovert.

On Timer

Der @defer-Block wird nach einer festgelegten Zeit gerendert.

On Idle

Nachdem die initiale Seite geladen wurde und sich der Browser im Ruhezustand befindet, wird der @defer-Block geladen.

On Viewport

Der Inhalt des @defer-Blocks wird dann gerendert, wenn sich der Inhalt des @placeholder im sichtbaren Teil des Browserfensters befindet.

Prefetch

Neben der Möglichkeit, Teile des Templates nachzuladen, ist es noch möglich, den Ladevorgang durch die prefetch-Bedingung zu beeinflussen. Der Inhalt im @defer-Block wird geladen, wenn der User mit der Maus über den Inhalt im @placeholder hovert. Angular rendert aber den Inhalt im @defer-Block erst dann, wenn es eine Interaktion mit dem @placeholder gab.

Signals sind Production Ready

Signals wurden in Angular Version 16 als Developer Preview Feature vorgestellt und sind jetzt stabil und bereit für die Verwendung in produktiven Umgebungen.

Automatisches Entfernen von CSS

Wenn eine Komponente aus dem DOM entfernt wird, wird ab sofort auch das entsprechende CSS automatisch entfernt. Dies hat positive Auswirkungen auf die Performance und sorgt für eine verbesserte Benutzererfahrung.

Fehler im Dev Mode beim langsamen lazy loading von Bildern

Mit dem Tool NgOptimizedImages bietet Angular eine Möglichkeit, Bilder für das Web zu optimieren, jedoch kann das zu verlangsamtem Laden der initialen Seite führen, wenn alle Bilder lazy geladen werden. Deshalb sollte man die Bilder, die die höchste Priorität haben, auch sofort laden.  Sollte man diesen Schritt vergessen, zeigt Angular jetzt einen Fehler in der Konsole an.

View Transitions API

Der Angular Router kann jetzt die neue View Transitions API moderner Browser verwenden, um das Routing zwischen Seiten zu animieren.

Um die Api verwenden zu können, muss die withViewTransitions-Funktion importiert werden:

 

Die withViewTransitions-Funktion muss noch in der Routerkonfiguration hinzugefügt werden:


Mit diesen wenigen Schritten ist es jetzt möglich, Animationen beim Routing zu haben. Zusätzlich ermöglicht die View Transitions API eigene Animationen mit CSS zu erstellen.

 

Fazit

Angular 17 ist ein weiteres Release vollgepackt mit neuen Features und Verbesserungen. Dieses bringen uns einen Schritt weiter in der modernen Web Entwicklung.

Der offizielle Zeitpunkt des Releases ist für diese Woche geplant. Mehr Infos zum offiziellen Release gibt es unter: https://angular.io/

Blogautor

Dinko Hodžić
Softwareentwickler ARS Computer und Consulting GmbH

Ihr Erfolg ist unser Ziel

Stehen Sie vor komplexen IT-Projekten? Mit unserer Expertise bieten wir Ihnen maßgeschneiderte Lösungen. Erfahren Sie mehr.

Werde Teil unseres Teams

Wir suchen ständig nach neuen Talenten. Für dich haben wir genau die richtige Stelle. Schau dir unsere offenen Positionen an.

Noch Fragen? Wir helfen Ihnen gerne!

Blog 16.05.24

Angular 18: Das nächste Kapitel

Angular 18 bringt Leistungsverbesserungen, neue Features und Entwicklerwerkzeuge mit sich. Erfahren Sie mehr über Zoneless Angular, verbesserte Bundling-Strategien und Barrierefreiheitsverbesserungen.

Blog 28.08.23

Demokratisierung von Softwaretests

Besser und schneller Software testen: Welche Testmethoden beziehen nicht-technische Abteilungen ein? Über Tools wie Cypress und Cucumber lesen Sie hier.

Blog 18.07.24

Ticket-Schneiden: Best Practices und Agile Methoden

Erfahren Sie, wie Sie effektive Tickets für die Softwareentwicklung schreiben und schneiden, um Probleme zu vermeiden. Mehr über die Bedeutung von User Stories und deren korrekte Umsetzung.

Blog 13.11.24

Versteckte Barrieren durch Drittanbieter

Drittanbieter-Integrationen erleichtern die Webentwicklung, bergen aber Risiken für die Barrierefreiheit. Erfahren Sie, wie Sie Barrieren erkennen und vermeiden.

Blog 24.10.24

DevOps und APIOps in der Praxis: Best Practices

Wie lassen sich DevOps und APIOps erfolgreich kombinieren? In diesem Artikel erfahren Sie, welche Best Practices und Erfolgsfaktoren moderne Softwareentwicklung schneller und skalierbarer machen.

Blog 05.09.24

Effiziente DevOps-Teams: Teamschnitte und Kommunikation

Durch gezielte Teamschnitte und optimale Kommunikationsmodi wird die kognitive Last in DevOps-Teams reduziert. Für effizientere Zusammenarbeit und kontinuierlichen Fortschritt.

Blog 10.10.24

DevOps? Warum APIOps der nächste logische Schritt ist

APIOps erweitert DevOps-Praktiken auf APIs, um deren Entwicklung zu automatisieren und zu optimieren. Dieser Ansatz verbessert Qualität, Sicherheit und Geschwindigkeit im API-Management.

Blog 23.08.24

"DevOps, quo vadis?" – Team Topologien

Erfahren Sie, wie Team-Topologien in DevOps Silos aufbrechen und erfolgreiche Zusammenarbeit fördern. Entdecken Sie die vier fundamentalen Teamarten.

Blog 30.05.24

React Server Components und Next.js

Erfahren Sie mehr über React Server Components und Next.js für effizientes Server Side Rendering in Web-Applikationen. Eine detaillierte Analyse und Implementierungstipps.

Blog 13.06.24

Barrierefreiheit richtig umsetzen

Warum Barrierefreiheit im Web so wichtig ist und wie sie richtig umgesetzt werden kann. Entdecken Sie die Vorteile, Prinzipien und Best Practices für eine inklusive Online-Umgebung.

Blog 19.09.24

Die Zukunft datenbankzentrierter IT-Architekturen

Datenbankzentrierte IT-Architekturen prägen viele Unternehmen. Doch ist dieser Ansatz noch zukunftsfähig? Dieser Artikel beleuchtet die Herausforderungen und Alternativen.

Blog 02.03.23

Enterprise Architecture vs. DevOps und agiles Mindset

Über die Rolle von Enterprise-Architekten in Unternehmen, wie sie moderne Softwareentwicklung beeinflussen und Kompetenzbereiche in IT-Abteilungen.

Blog 15.04.23

Die vielfältigen Bestandteile API-basierter Produkte

API ist technisch betrachtet ein System mit Schnittstellen, z.B. REST. Was gehört zu einem guten API-Design? Wie wird ein API-Produkt erfolgreich?

Blog 01.08.24

Migration von HOST-Anwendungen zu AWS: Modernisierung

Lernen Sie, wie moderne AWS-Services nahtlos in bestehende Host-Landschaften integriert werden und profitieren Sie von den Vorteilen von Serverless-Technologien.

Blog 02.02.23

Computer Aided Cloud Transformation

Was bedeutet Computer aided cloud transformation? Warum ist Enterprise Architecture Management wichtig? Wie gelingt das Asset- und Ressourcenmanagement?

Blog 16.02.23

Keine Angst vor Komplexität

Wie kann man die Komplexität der Organisation u. Technologie, die neue Plattformen, Architekturen und neue Entwicklerkultur mit sich bringen, beherrschen?

Blog 24.11.22

Architekturarbeit im Zeitalter Cloud-nativer Architekturen 3

Gedanken zu Möglichkeiten von Cloud-native-Architekturen und Kriterien zur Auswahl der Technologie: Standard nehmen oder sich dem Cloud-Anbieter ergeben?

Blog 25.05.23

Roadmap zu digitalen Produkten

Was ist bei der Skalierung von API-Initiativen zu beachten? Wie werden durch zentrale Verwaltung und Veröffentlichung von APIs diese Daten und Dienste zugänglich?

Blog 11.11.24

API Maturity: Wie reif sind unsere Schnittstellen?

API-Reife: Wie fit sind Ihre Schnittstellen für die Digitalisierung? Erfahren Sie, wie API-Reifegradmodelle Integration, Skalierbarkeit und Effizienz in Ihrem Unternehmen fördern können.

Blog 05.11.24

Strategische Bedeutung von APIs in digitaler Transformation

Erfahren Sie, wie APIs Unternehmen Wettbewerbsvorteile verschaffen und die digitale Transformation beschleunigen. Mit praxisnahen Beispielen und Tipps zur Umsetzung.