Tool-Tipp

Express-Alternative Feathers: Das macht das Node.js-Framework anders

(Foto: Andreas Gamst Laursen / Shutterstock)

Ihr braucht nicht noch ein JavaScript-Framework? Doch! Feathers ist Open Source und ein bisschen anders als die anderen. Seit dieser Woche ist Version 4 öffentlich verfügbar – ein Anlass, sich den Underdog mit den Vogelarten im Versionsnamen genauer anzuschauen.

FeathersJS ist ein client-seitiges Node.JS-Framework, mit dem ihr Real-Time-Anwendungen und REST-API in Node.JS, React.JS und eurem Browser erstellen könnt. Das Framework basiert auf einer Kombination von Design-Patterns und Tools.

Viele Lower-Level-Node.JS-Frameworks wie Express, Koa, Fastify und Hapi eignen sich zwar für fast alles – sofern man Lust hat, auch fast alles selber zu orchestrieren und zu bauen. In Express, dem populärsten davon, werden Entwicklern zum Beispiel nur Konzepte für Routing und das Handling von HTTP-Requests an die Hand gegeben. Das sorgt für Freiheit, aber auch dafür, dass man sich die restliche Architektur selbst ausdenken muss. In Rails gibt es API und klar definierte Richtlinien für die Handhabung von Projektstruktur, Konfiguration, Database-Layer, Authentifizierung, Logging, Error-Handling und sogar Job-Queues. Viele Higher-Level-Frameworks für Node.JS – zum Beispiel Sails oder NestJS – kopieren die MVC-Struktur von Rails. MVC steht für eine aus den Komponenten Model, Controllers und Views bestehende Software-Architektur.

Services und Hooks als Basis

Das Design von Feathers basiert auf Services und sogenannten Hooks. Das Service-Layer könnt ihr euch als ein gemeinsames Interface vorstellen, das von verschiedenen Clients – also zum Beispiel dem Interface eurer Web-App, dem Kommandozeilen-Tool oder Integration-Gateways – gemeinsam genutzt wird. Diese Clients unterscheiden sich in ihrer Verwendung, interagieren aber oft gemeinsam mit einer App. Dafür braucht ihr Routes, HTTP-Requests, Controller und Response-Handler. Das Service-Layer vereint die Logik des Zusammenspiels in einem gemeinsamen Interface – das bedeutet: kein Routing, keine Response-Handler, keine HTTP-Requests, keine Controller – und am Ende weniger komplizierten Code. Services sind einfache JS-Objekte mit einer oder mehreren Methoden, die wie Express-Middleware registriert werden können. Workflows sind aneinandergereihte sogenannte Hooks oder Middleware-Funktionen, die vor, nach oder innerhalb der Service-Methoden registriert werden können. Datenfluss und Fehlermeldungen werden durch sogenannte Continuations gesteuert – das Ergebnis einer Funktion wird an die nächste weitergereicht. Man nennt diesen Programmierstil auch Continuation-Passing-Style, in Abgrenzung zum sogenannten Direct-Style, bei dem Ergebnisse nach Ausführung einer Funktion wieder an den Aufrufer zurückgegeben werden. Hooks sind transportunabhängig – es spielt keine Rolle, ob sie über HTTP(S), Socket oder Primus aufgerufen wurden – und service-agnostisch, sie können mit jedem Dienst verwendet werden. Mittels Hooks können zum Beispiel Validierung, Logging oder der Versand von Notifications geregelt werden. So bleibt die Flexibilität der Logik eurer Anwendung gewahrt. Das Gute daran: Sie ist leicht zu testen und die Codebase übersichtlich und einfach zu debuggen. Aufgrund der Service-Layer-Architektur könnt ihr eure App einfach zu einer REST-API oder Websocket-Real-Time-API machen oder Protokolle wie HTTP2 oder GraphQL hinzufügen, ohne etwas am Code eurer App zu verändern.

Das ist neu

TypeScript-Unterstützung

Feathers’ Core-Libraries und Database-Adapter können ab jetzt auch mit TypeScript verwendet werden. Im offiziellen Guide und in der API-Doku findet ihr alle Beispiele jetzt auch in TypeScript. Wer will, kann natürlich bei JavaScript bleiben.

Neuer Authentifizierungsmechanismus

Die neue User-Authentifizierung in Feathers 4 bietet protokollunabhängige Authentifizierungsstrategien, die ihr nach euren Wünschen customizen könnt. Sie unterstützt verschiedene Login-Verfahren wie zum Beispiel oAuth, Passwort/Username und JSON Web Tokens.

Neue Homepage und überarbeitete Dokumentation

Wir kennen die alte Doku nicht – deshalb: kein Vergleich. Der Feathers Guide ist auf jeden Fall verständlich geschrieben und macht sogar Spaß. Mit dem Tutorial steht eure erste REST-API in nur 15 Minuten, für eine Chat-Funktion mit REST- oder Websocket-API inklusive Frontend, Unit Tests, Nutzerregistrierung und GitHub-Login müsst ihr etwa zwei Stunden einplanen.

Zukunftspläne

Seit dem Release von Feathers 1.0 sind mittlerweile knapp fünf Jahre vergangen. Das Open-Source-Framework will in der Tradition anderer, eher minimalistischer Frameworks wie Express oder Koa seinen Nutzern auch künftig eine Basis bieten, die sich beliebig an deren Anforderungen anpassen lässt. Ein Großteil der für das nächste Release geplanten Updates werden Plugins und Addons sein, durch die ihr eure Umgebung beliebig erweitern könnt. In Planung ist eine an Koa angelehnte Hook-Systematik, die ihr mit jeder beliebigen JavaScript– oder TypeScript-Methode verwenden könnt. Der neue Authentifizierungsmechanismus von Version 4 ermöglicht es euch, relativ einfach neue Transport-Adapter hinzuzufügen. Eine KoaJS-Framework-Integration und ein nativer HTTP- und HTTP2-Adapter sind bereits in Arbeit.

Fazit

Sieht vielversprechend aus. Wer Feathers bisher nicht kannte, könnte spätestens mit Version 4 einen Blick darauf werfen. Besonders ansprechend finden wir die Modularität und die klare Projektstruktur, die aus der Verwendung des Frameworks resultiert. Eventuell könnte die Open-Source-Lösung sogar als Alternative zu kostenpflichtigen BaaS-Angeboten wie Firebase in Erwägung gezogen werden. Der aktuelle Namensgeber ist übrigens eine Krähe.

Das könnte dich auch interessieren: 

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Ein Kommentar
Stefan Teupe
Stefan Teupe

Ein Link zu dem Produkt über das ihr schreibt sollte selbstverständlich sein?!
Warum setzt ihr nur Querverweise auf eigene Artikel?

Feathers 4 werde ich mir mal anschauen, Danke für den Tipp.

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung