Eine Einführung in Nest.js

Für Webapplikationen mit Node.js ist das Framework Express der Platzhirsch schlechthin. Eine willkommene Abwechslung bietet Nest.js, das moderne Entwicklungsmuster in die Serverwelt bringt.

Werkzeuge  –  4 Kommentare
Eine Einführung in Nest.js

(Bild: Blackboard/Shutterstock.com)

Node.js erfreut sich in der Webentwicklung seit mehreren Jahren stetig wachsender Beliebtheit. Auf Basis der JavaScript-Plattform entstehen zahlreiche Entwicklungswerkzeuge sowie Backends für Webapplikationen. Jedoch gibt es einen großen Kritikpunkt, wenn es um den Einsatz von Web-Application-Frameworks wie Express geht: die fehlende Architektur.

Diese Frameworks bieten zwar zahlreiche Features und ein Plug-in-System, mit dem Entwickler zusätzliche Erweiterungen laden können, um die Arbeit zu vereinfachen. Allerdings machen Express und Co. keine Angaben, wie die einzelnen Bestandteile einer Applikation zusammenwirken oder wie das Framework sie gruppiert. Das versucht ein relativ junges Projekt zu lösen. Die Rede ist von Nest, einem Framework für Node.js, um Backends für Webapplikationen zu bauen. Das Ziel von Nest ist eine Steigerung der Entwicklungseffizienz. Hierfür bedient sich das Framework sowohl bei etablierten als auch bei neuen Features der JavaScript-Welt.

Nest.js auf der enterJS

Auf der von heise Developer, iX und dpunkt.verlag veranstalteten Konferenz für Enterprise-JavaScript enterJS ist Sebastian Springer unter anderem mit einem Vortrag zu Nest.js im Programm zu sehen.

Nest: Anders als die anderen?

Die Entwickler von Nest haben die Stärken verschiedener JavaScript-Frameworks und Bibliotheken zu einem neuen zeitgemäßen Framework kombiniert. Entwickler, die mit dem Frontend-Framework Angular gearbeitet haben, erkennen zahlreiche Muster wieder – die Nest-Macher nennen das Framework eine große Inspiration. Doch wie lassen sich Architektur- und Entwurfsmuster aus dem Frontend auf das Backend übertragen?

Die Grundlage von Nest bildet nicht JavaScript, sondern das Superset TypeScript. Das gesamte Framework ist in TypeScript geschrieben und befindet sich damit in guter Gesellschaft. Sowohl Angular als auch die für 2019 geplante Version 3 des Frameworks Vue.js sind in TypeScript entwickelt. Auch Entwickler bei Facebook liebäugeln zunehmend mit TypeScript: Das zeigt die Unterstützung von TypeScript bei Create-React-App oder die Tatsache, dass man das Testframework Jest nach TypeScript portiert hat.

Nest verfolgt darüber hinaus einen modularen Ansatz. Er ist nicht nur beim Aufsetzen einer Applikation bemerkbar, wenn Entwickler sie in lose gekoppelte Module unterteilen können, sondern auch im Kern des Frameworks, wo Anwender das zugrunde liegende Applikations-Framework wenn nötig austauschen können.

Beim grundsätzlichen Setup folgt Nest bewährten Pfaden, modernisiert sie allerdings teilweise erheblich. So bleibt das von Express gewohnte Routing erhalten. Nest konfiguriert die Routen jedoch nicht im Quellcode, sondern annotiert sie über TypeScript-Decorator. Überhaupt nutzt Nest die aus Angular bekannten Dekoratoren recht intensiv. Die Funktionen hinter den einzelnen Routen sind in Controller-Methoden organisiert. Sie sollen sich um die Extraktion von Informationen aus der eingehenden Anfrage und die Erzeugung einer Antwort an den Client kümmern.

Die Businesslogik der Applikation befindet sich in separaten Service-Klassen, die Entwickler über Dependency Injection laden können. Den Zugriff auf Datenquellen wie Datenbanken oder Webservices können Nutzer, ähnlich wie die Businesslogik, über Services kapseln. Auch die Integration einer Datenbankabstraktionsschicht ist in nur wenigen Schritten möglich. Damit ist das Ziel, die Standardelemente eines Web-Backends in kurzer Zeit lauffähig zu haben, mit Nest in greifbare Nähe gerückt. Sie bilden die Basis für eine modulare Applikation mit einem Fokus auf guter Wartbarkeit und Erweiterbarkeit. Um den Boilerplate-Code, der für eine Applikation von Hand geschrieben werden muss, auf ein Minimum zu reduzieren, bietet Nest eine Kommandozeilenschnittstelle, die die Applikation über ihren gesamten Lebenszyklus begleitet.