JavaScript-Frameworks: Zu viele Frameworks, zu wenige Paradigmen

JavaScript-Frameworks: Zu viele Frameworks, zu wenige Paradigmen

Warum sich React, Vue, Angular und Svelte ähnlicher sind, als ihre Namen vermuten lassen – und wo echte Alternativen entstehen

Aktualisiert:

Abstract

Viele klagen über zu viele JavaScript-Frameworks. Das eigentliche Problem sind wenige Grundmodelle. Was Signals, Server-first und Webstandards daran ändern.
  • #JavaScript Frameworks
  • #Frontend Entwicklung
  • #Webentwicklung
  • #Framework Paradigmen
  • #Template-basierte Frameworks
  • #Web-Architektur
  • #Performance Optimierung
  • #Developer Experience
  • #State Management
  • #Routing
  • #Build Tools
  • #Web Standards
  • #TypeScript
  • #Reaktivität
  • #Virtual DOM
  • #Signals

Signals, Server-first, kein Build-Schritt: Wie viel Neues steckt wirklich in der Frontend-Entwicklung?

React, Vue, Angular, Svelte, Solid, Qwik, Astro, Lit: Wer die Frontend-Entwicklung verfolgt, kennt das Stöhnen über die „Framework-Müdigkeit“. Jedes Jahr kommt ein neuer Name dazu, jede Konferenz hat einen neuen Favoriten, und Teams fragen sich, ob ihre Entscheidung von vor drei Jahren schon wieder veraltet ist.

Die Klage trifft aber den falschen Punkt. Die Zahl der Frameworks ist nicht das Problem. Auffällig ist vielmehr, wie ähnlich die meisten von ihnen gebaut sind. Fast alle beschreiben die Oberfläche als Baum von Komponenten, übersetzen eine eigene Template-Syntax in JavaScript und halten die Anzeige zur Laufzeit mit dem Zustand synchron. Die Unterschiede liegen in Details, die in Benchmarks und Diskussionen groß wirken. Dieser Beitrag fragt, welche Grundmodelle es tatsächlich gibt, wo die heutigen Frameworks Kosten verursachen, die man selten sieht, und wo sich gerade echte Alternativen herausbilden.

Ein Verarbeitungsmodell unter vielen Namen

Seit React 2013 erschien, folgt der Großteil der Frontend-Frameworks demselben Ablauf:

  1. Die Oberfläche wird deklarativ beschrieben, also als gewünschter Endzustand statt als Folge von Befehlen – in JSX, in Vue-Templates, in Angular-Templates oder in Svelte-Dateien.
  2. Ein Compiler übersetzt diese Beschreibung beim Build in JavaScript.
  3. Der Browser lädt den Code und baut daraus die Seite auf.
  4. Ein Laufzeitsystem beobachtet den Zustand und aktualisiert das DOM, die Baumstruktur der Seite, wenn sich etwas ändert.

Ein einfaches Beispiel in Vue:

<script setup lang="ts">
import { ref } from 'vue';

const showElement = ref(true);
const message = ref('Bestellung gespeichert');
</script>

<template>
  <div v-if="showElement">{{ message }}</div>
</template>

Zwischen diesem Code und dem sichtbaren Hinweis im Browser liegen mehrere Schritte. Der Vue-Compiler zerlegt das Template beim Build in einen Syntaxbaum, wandelt v-if in eine Bedingung und die doppelten geschweiften Klammern in einen reaktiven Ausdruck um und erzeugt daraus eine Render-Funktion. Zur Laufzeit liest diese Funktion die Werte über Vues Reaktivitätssystem, das jeden Zugriff registriert, und das Ergebnis wird mit dem vorherigen verglichen, bevor das DOM sich ändert.

Diese Kette ist kein Konstruktionsfehler. Das Parsen passiert einmal beim Build, nicht bei jedem Aufruf, und die Laufzeitkosten sind für eine Bedingung vernachlässigbar. Der Preis liegt woanders: Zwischen dem, was Entwickler:innen schreiben, und dem, was der Browser ausführt, liegt eine Übersetzung, die man kennen muss, wenn etwas schiefgeht. Eine Fehlermeldung aus einer generierten Render-Funktion oder ein Effekt, der zu oft läuft, führt direkt in die Interna des Frameworks.

Wo Abstraktion kostet und wo sie sich auszahlt

Kritiker rechnen gern vor, wie viele Schichten zwischen Code und Bildschirm liegen. Das ist richtig, aber unvollständig. Eine ehrliche Bilanz sieht so aus.

Der virtuelle DOM als Kompromiss

React hat den virtuellen DOM populär gemacht: Die Oberfläche wird bei jeder Änderung als leichtgewichtige Kopie neu berechnet, mit der alten verglichen, und nur die Unterschiede gehen in den echten DOM. Das Verfahren war nie die schnellste Methode, DOM zu aktualisieren, sondern eine bequeme. Es erlaubt, die Oberfläche als reine Funktion des Zustands zu denken, ohne sich um einzelne DOM-Knoten zu kümmern.

Die Kosten zeigen sich bei Oberflächen mit sehr vielen, sehr häufigen Änderungen. Angenommen, ein Leitstand zeigt hundert Maschinen mit Messwerten, die mehrmals pro Sekunde aktualisiert werden. Rechnet das Framework bei jedem Messwert größere Teile des Komponentenbaums neu, frisst das Rechenzeit, die auf einem Industrie-Tablet spürbar fehlt. Die Lösung liegt dann meist in feinerer Zerlegung, Memoisierung oder darin, einzelne Bereiche am Framework vorbei direkt zu zeichnen, etwa in ein Canvas-Element. Wie Frameworks Änderungen im Detail in das DOM übertragen, beschreibt der Beitrag JavaScript-Frameworks und das DOM.

Wrapper um gewöhnliche Bibliotheken

Ein zweiter Kostenpunkt sind Anpassungsschichten. Für Diagrammbibliotheken wie D3, für Karten, Rich-Text-Editoren oder 3D-Grafik gibt es fast immer eigene Pakete für React, Vue oder Angular. Sie fügen kaum Funktionen hinzu. Sie lösen ein Zuständigkeitsproblem: Das Framework will das DOM kontrollieren, die Bibliothek auch. Der Wrapper vermittelt zwischen beiden und bindet die Bibliothek an den Lebenszyklus der Komponente.

Jede solche Schicht ist eine weitere Abhängigkeit mit eigenem Release-Rhythmus. Wird sie nicht mehr gepflegt, hängt ein Projekt beim nächsten Framework-Update fest. In vielen Fällen ist es wartungsärmer, die Bibliothek direkt einzubinden und ihr per Referenz ein eigenes DOM-Element zu überlassen. Das funktioniert in allen gängigen Frameworks, wird aber selten so gelehrt.

Wo die Abstraktion trägt

Gegen die Kritik steht eine einfache Beobachtung: Große Oberflächen mit vielen Entwickler:innen waren vor den Komponenten-Frameworks schwer beherrschbar. Wer eine jQuery-Anwendung mit hundert Masken gewartet hat, in der beliebiger Code an beliebiger Stelle das DOM verändert, weiß, warum sich das deklarative Modell durchgesetzt hat. Die Abstraktion kostet Rechenzeit und Verständnis, sie kauft dafür Vorhersagbarkeit im Team.

Signals: Die Reaktivität wächst zusammen

Die interessanteste Entwicklung der letzten Jahre widerspricht der These vom Stillstand teilweise. Fast alle Frameworks sind bei der Reaktivität auf dasselbe Modell umgeschwenkt: Signals. Ein Signal ist ein Wert, der sich merkt, welcher Code ihn gelesen hat, und genau diesen Code bei einer Änderung erneut ausführt. Statt einen ganzen Komponentenbaum neu zu berechnen, wird nur die betroffene Stelle aktualisiert.

Solid hat das Prinzip im Frontend bekannt gemacht, Preact bietet es als eigene Bibliothek an, Angular baut seit Version 16 darauf um, Vue nutzt es intern schon seit Version 2 (seit Version 3 über Proxies), und Svelte 5 hat seine Runes ($state, $derived, $effect) darauf gestellt. Bei TC39, dem Gremium für den JavaScript-Standard, liegt seit 2024 ein Vorschlag, Signals direkt in die Sprache aufzunehmen. Er befindet sich noch in einem frühen Stadium.

Wie wenig Magie dahintersteckt, zeigt eine stark vereinfachte Umsetzung in reinem JavaScript:

let aktuellerEffekt = null;

export function signal(startwert) {
  let wert = startwert;
  const abonnenten = new Set();
  return {
    get() {
      if (aktuellerEffekt) abonnenten.add(aktuellerEffekt);
      return wert;
    },
    set(neu) {
      if (Object.is(neu, wert)) return;
      wert = neu;
      for (const effekt of [...abonnenten]) effekt();
    },
  };
}

export function effect(fn) {
  const ausfuehren = () => {
    const vorher = aktuellerEffekt;
    aktuellerEffekt = ausfuehren;
    try {
      fn();
    } finally {
      aktuellerEffekt = vorher;
    }
  };
  ausfuehren();
}

// Anwendung: Der Effekt läuft nur, wenn sich anzahl ändert
const anzahl = signal(0);
const ausgabe = document.querySelector('#anzahl');
effect(() => {
  ausgabe.textContent = `Artikel im Warenkorb: ${anzahl.get()}`;
});
document.querySelector('#plus').addEventListener('click', () => {
  anzahl.set(anzahl.get() + 1);
});

Echte Implementierungen kümmern sich zusätzlich um abgeleitete Werte, das Aufräumen alter Abhängigkeiten und das Bündeln mehrerer Änderungen. Das Grundprinzip passt aber auf eine Bildschirmseite.

Für die Paradigmen-Frage ist das ein zweischneidiges Ergebnis. Einerseits haben die Frameworks ein besseres Modell gefunden und es erstaunlich schnell übernommen, selbst Angular mit seiner großen Unternehmensbasis. Andererseits ist die Monokultur damit eher größer geworden: Die Frameworks unterscheiden sich in der Reaktivität heute weniger als vor fünf Jahren. React geht als einziges großes Framework einen anderen Weg und lässt seit 2025 einen Compiler die Memoisierung übernehmen, die Signals überflüssig machen würden.

Server-first: Ein altes Paradigma kommt zurück

Das zweite Grundmodell ist älter als alle Frontend-Frameworks: Der Server erzeugt HTML, der Browser zeigt es an. Jahrelang galt das als überholt. Inzwischen kehrt es in mehreren Varianten zurück.

  • React Server Components führen Komponenten auf dem Server aus und schicken das Ergebnis an den Browser. Nur Komponenten, die Interaktion brauchen, landen als JavaScript beim Client. Wie sich das auf Komponentenschnitt und Zustandsverwaltung auswirkt, behandelt der Beitrag React-Architektur: Komponenten, Zustand und Performance.
  • Inselarchitektur („Islands“), bekannt durch Astro, liefert statisches HTML und macht nur einzelne Bereiche interaktiv, etwa eine Suche oder einen Warenkorb.
  • Resumability, das Prinzip von Qwik, setzt die auf dem Server begonnene Ausführung im Browser fort, statt die ganze Anwendung beim Laden erneut zu starten.
  • HTML über die Leitung, etwa mit htmx oder Hotwire, verzichtet fast ganz auf clientseitige Logik. Ein Klick lädt ein HTML-Fragment vom Server und ersetzt damit einen Teil der Seite. Wie weit das trägt, zeigt der Beitrag htmx: Webanwendungen ohne JavaScript-Framework.

Hier entsteht tatsächlich Vielfalt. Die Varianten beantworten die Frage, wo Code laufen soll, sehr unterschiedlich. Für Teams heißt das: Die wichtigere Entscheidung ist oft nicht „React oder Vue“, sondern „wie viel Logik gehört überhaupt in den Browser“. Ein internes Bestellformular mit Validierung braucht keine Single-Page-Anwendung. Ein kollaborativer Editor, in dem mehrere Personen gleichzeitig schreiben, kommt ohne umfangreiche Logik im Browser nicht aus.

Ohne Build-Schritt: Was die Plattform heute selbst kann

Das dritte Paradigma ist das radikalste: auf ein Framework weitgehend verzichten und direkt mit den Webstandards arbeiten. Vor zehn Jahren war das für größere Anwendungen kaum realistisch. Heute bringen die Browser vieles mit, wofür früher Werkzeuge nötig waren: ES-Module laden Code ohne Bundler, Import Maps lösen Paketnamen auf, Web Components kapseln eigene HTML-Elemente, und CSS beherrscht Verschachtelung, Container Queries und den :has()-Selektor.

Eine kleine Komponente ohne Build-Schritt sieht so aus:

<script type="importmap">
  {
    "imports": {
      "lit": "https://cdn.jsdelivr.net/npm/lit@3/+esm"
    }
  }
</script>

<script type="module">
  import { LitElement, html } from 'lit';

  class LagerBestand extends LitElement {
    static properties = { menge: { type: Number } };

    constructor() {
      super();
      this.menge = 0;
    }

    render() {
      return html`
        <p>Bestand: ${this.menge} Stück</p>
        <button @click=${() => this.menge++}>Zugang buchen</button>
      `;
    }
  }

  customElements.define('lager-bestand', LagerBestand);
</script>

<lager-bestand menge="12"></lager-bestand>

Lit ist eine kleine Bibliothek über dem Web-Components-Standard. Die Datei läuft so im Browser, ohne Compiler und ohne Entwicklungsserver. Für Produktivbetrieb sollten Sie Abhängigkeiten allerdings selbst ausliefern statt aus einem fremden CDN, schon aus Datenschutz- und Verfügbarkeitsgründen.

Der Verzicht hat einen Preis, der in Grundsatzdebatten gern kleingeredet wird. Ohne Build-Schritt fehlen TypeScript-Prüfung, Minifizierung und das automatische Aufteilen des Codes. Ohne Framework fehlen Konventionen, auf die sich ein wachsendes Team stützen kann, und Werkzeuge wie die React- oder Vue-DevTools. Die Browser-Entwicklerwerkzeuge sind mächtig, sie zeigen aber DOM und Netzwerk, nicht den Zustand einer Anwendung. Für eine kleine Fachanwendung oder ein Designsystem, das in mehreren Frameworks funktionieren soll, ist der Weg trotzdem attraktiv. Für eine große Anwendung mit wechselnden Teams baut man sich ohne Framework schnell ein eigenes, nur ohne Dokumentation.

Warum etablierte Frameworks nur in Schritten umbauen

Je erfolgreicher ein Framework ist, desto vorsichtiger muss es sich verändern. Millionen Komponenten, Schulungsunterlagen und Bibliotheken hängen an seinen Grundentscheidungen. React kann JSX nicht abschaffen, Vue nicht seine Templates, Angular nicht die Dependency Injection.

Die Jahre seit 2023 zeigen aber, dass „in Schritten“ nicht „gar nicht“ heißt. Angular kommt seit Version 21 standardmäßig ohne Zone.js aus, das jahrelang das Herz seiner Änderungserkennung war, und hat mit Version 19 Standalone-Komponenten statt NgModules zum Standard gemacht. Vue arbeitet am Vapor Mode, der ohne virtuellen DOM auskommt. React hat mit Server Components das Modell, wo Code läuft, grundlegend erweitert. Diese Umbauten geschehen jeweils mit langen Übergangsphasen, in denen alter und neuer Stil nebeneinander funktionieren.

Für Teams bedeutet das eine eigene Last: Eine Codebasis enthält nach einigen Jahren mehrere Generationen desselben Frameworks. Angular-Projekte mischen RxJS und Signals, React-Projekte Klassenkomponenten, Hooks und Server Components. Der Wartungsaufwand entsteht weniger durch das Framework selbst als durch diese Schichten.

Die Kaskade der Abhängigkeiten

Hinzu kommen Abhängigkeiten, die sich gegenseitig blockieren. Ein Framework-Update setzt eine neue Version des Build-Werkzeugs voraus, die alte Plugins nicht mehr unterstützt, deren Nachfolger wiederum eine neue Version der Komponentenbibliothek verlangen. Angenommen, ein Team will nur eine Sicherheitslücke in einer Bibliothek schließen und stellt fest, dass das Update eine neue Node.js-Version, ein neues Testwerkzeug und eine angepasste Build-Konfiguration nach sich zieht. Aus einer halben Stunde werden zwei Wochen.

Das ist kein Plan einzelner Hersteller, sondern die Folge vieler kleiner Abhängigkeiten mit eigenem Takt. Wirksam dagegen sind wenige, bewusst gewählte Abhängigkeiten, regelmäßige kleine Updates statt seltener großer und automatisierte Tests, die ein Update absichern.

Hausgemachte Komplexität: Zustand, Routing, Tests

Ein Teil der Komplexität im Frontend ist nicht dem Paradigma geschuldet, sondern Gewohnheit.

Zustandsverwaltung ist das bekannteste Beispiel. Redux, MobX, Zustand, Jotai, Pinia, NgRx: Die Auswahl suggeriert, Zustand sei ein schwieriges Problem. Für einen großen Teil der Anwendungen ist er das nicht. Lokaler Zustand gehört in die Komponente, gemeinsamer Zustand in wenige klar benannte Stellen. Schwierig wird es bei Daten vom Server, die zwischengespeichert, aktualisiert und mit anderen Nutzern abgeglichen werden müssen. Dafür haben sich spezialisierte Bibliotheken wie TanStack Query bewährt. Eine globale Store-Bibliothek ist dann oft überflüssig. Mit Signals wird lokaler und gemeinsamer Zustand zudem deutlich einfacher, weil ein Signal in einem gewöhnlichen Modul liegen kann.

Routing wirkt auf den ersten Blick trivial: je nach URL einen anderen Inhalt zeigen. In der Praxis kommen Datenladen vor dem Anzeigen, verschachtelte Layouts, Zugriffsschutz und Codeaufteilung hinzu. Dafür sind Router-Bibliotheken sinnvoll. Überflüssig sind sie dort, wo eine Anwendung ohnehin aus wenigen Seiten besteht, die der Server ausliefern könnte.

Tests brauchen dagegen vor allem eine saubere Trennung: Geschäftslogik in gewöhnlichen Funktionen lässt sich ohne Framework testen, nur die Darstellung braucht Werkzeuge wie Testing Library oder ein Browser-Testwerkzeug wie Playwright. Teams, die alles über Komponententests prüfen, testen häufig mehr Framework als eigene Logik.

Was das für Ihr Team bedeutet

Die These vom Paradigmenmangel trifft auf die Reaktivität heute stärker zu als je zuvor, denn hier haben sich fast alle Frameworks auf Signals geeinigt. Bei der Frage, wo Code läuft, ist dagegen echte Vielfalt entstanden: Server Components, Inseln, Resumability und HTML über die Leitung sind unterschiedliche Antworten auf dieselbe Frage. Und die Webplattform ist inzwischen so weit, dass der Verzicht auf ein Framework für kleinere Vorhaben eine ernsthafte Option ist.

Unsere Empfehlung: Stellen Sie die Paradigmen-Frage vor der Produktfrage. Klären Sie zuerst, wie viel Logik in den Browser gehört, wie häufig sich die Oberfläche ändert und wie groß das Team in fünf Jahren sein wird. Erst danach lohnt der Vergleich einzelner Frameworks, wie ihn der Beitrag Frontend-Frameworks im Vergleich: Angular, React, Vue und Svelte anstellt. Überschätzt wird dabei die Wahl des „richtigen“ Frameworks, unterschätzt die Disziplin, mit wenigen Abhängigkeiten auszukommen und Geschäftslogik vom Framework fernzuhalten. Code, der nicht an ein Framework gebunden ist, überlebt auch den nächsten Wechsel.

Wer Frontend-Architekturen auf diese Fragen hin prüfen oder ein Team darin schulen will, findet bei uns Beratung, Coaching und Seminare zur Frontend-Architektur.

Häufige Fragen zu Paradigmen in JavaScript-Frameworks

Sind template-basierte Frameworks schlecht?

Nein. React, Vue, Angular und Svelte lösen reale Probleme, vor allem die Koordination großer Teams an großen Oberflächen. Die Kritik richtet sich gegen die Annahme, jedes Webprojekt brauche automatisch ein solches Framework. Für viele Vorhaben gibt es inzwischen einfachere Wege, die mit weniger Abhängigkeiten auskommen.

Werden Signals Teil von JavaScript?

Es gibt einen entsprechenden Vorschlag bei TC39, er ist aber noch weit von einer Aufnahme in den Standard entfernt. Selbst wenn er kommt, würden Frameworks Signals vermutlich weiterhin mit eigenen Komfortfunktionen umhüllen. Der Vorteil läge vor allem darin, dass Bibliotheken unterschiedlicher Frameworks denselben Reaktivitätskern teilen könnten.

Welche Rolle spielt TypeScript in dieser Debatte?

TypeScript fügt zur Laufzeit keine Schicht hinzu, es wird vor der Auslieferung in gewöhnliches JavaScript übersetzt. Es erweitert die Sprache um Typprüfung, ohne ein eigenes Programmiermodell vorzugeben, und funktioniert mit jedem der hier beschriebenen Ansätze. Der einzige Konflikt besteht mit dem Wunsch nach völligem Verzicht auf einen Build-Schritt. Node.js kann Typannotationen inzwischen direkt entfernen, im Browser ist dafür aber weiterhin ein Werkzeug nötig.

Wie lässt sich eine bestehende Anwendung schrittweise vereinfachen?

Ein vollständiger Neubau ist selten wirtschaftlich. Sinnvoller ist es, Geschäftslogik nach und nach aus Komponenten in gewöhnliche TypeScript-Module zu verlagern, überflüssige Abhängigkeiten zu entfernen und neue, wenig interaktive Seiten serverseitig auszuliefern. So sinkt die Bindung an das Framework, ohne dass der laufende Betrieb leidet.

Mehr aus „Frontend & UI“

Webentwicklung ohne SPA: Eine Web-App mit V, Veb, SQLite und htmx

Am Beispiel der Meetup-Plattform Clash zeigt sich, wie eine Web-App mit V, Veb, SQLite und htmx ohne SPA-Framework entsteht und wo der Ansatz an Grenzen stößt.

mehr erfahren

React-Performance: Warum weniger Optimierung mehr Tempo bringt

React-Performance heute: Wie Sie mit State am richtigen Ort, dem React Compiler, Transitions, Virtualisierung und Messung Ihre Anwendung spürbar beschleunigen.

mehr erfahren

React-Komponenten verbinden: Welcher Weg passt wann?

Props, Context, Zustand, TanStack Query, URL-Parameter oder Ereignisse: So wählen Sie den passenden Weg, damit zwei React-Komponenten Daten austauschen.

mehr erfahren

TanStack Start: Das React-Framework als Alternative zu Next.js

TanStack Start ist ein Fullstack-Framework für React auf Basis von TanStack Router und Vite. Was es kann und wann es eine Alternative zu Next.js ist.

mehr erfahren

HTMX: Moderne Webanwendungen ohne JavaScript-Framework bauen

HTMX lädt Inhalte nach, sendet Formulare und tauscht Seitenteile per HTML-Attribut aus. Die Anleitung zeigt Browser- und Serverseite und den Stand von HTMX 4.

mehr erfahren

Electron vs. Tauri: Desktop-Apps mit Webtechnik im Vergleich

Electron bringt Chromium und Node.js mit, Tauri nutzt den Webview des Systems und einen Kern in Rust. Der Vergleich zeigt, wann sich welches Framework eignet.

mehr erfahren

Weitere Blog-Artikel

npm-Sicherheit: Abhängigkeiten und Pakete gegen Angriffe absichern

npm-Sicherheit in der Praxis: wie Sie mit Lockfiles, npm ci, gesperrten Installationsskripten, 2FA und Trusted Publishing Ihre Lieferkette schützen.

mehr erfahren

Svelte und der Compiler-Ansatz: Was ohne virtuelles DOM anders ist

Svelte übersetzt Komponenten beim Build in gezielte DOM-Updates. Sie erfahren, wie das im Vergleich zu React, Signalen und dem React Compiler funktioniert.

mehr erfahren

Monolithen skalieren: Was Netflix und Prime Video wirklich zeigen

Auch Monolithen skalieren horizontal. Lesen Sie, was die Fälle Netflix und Prime Video wirklich zeigen und wann eine einzelne Anwendung große Last trägt.

mehr erfahren

Facebook und PHP: Vom Abschied über HHVM zu Hack

Ein Rückblick von 2025: Wie Facebook PHP mit HipHop, HHVM und Hack umbaute, warum es sich von PHP löste und was davon in PHP selbst ankam.

mehr erfahren

Warum Google Go schuf, Mozilla Rust nutzte und Banken bei Java bleiben

Google entwickelte Go, Mozilla förderte Rust, Banken bleiben bei Java. Welche Gründe dahinterstehen und welche Kriterien für Ihre eigene Sprachwahl taugen.

mehr erfahren

Von CommonJS zu ESM: Node.js-Projekte auf import umstellen

Die Umstellung von CommonJS auf ESM in Node.js Schritt für Schritt: package.json, Dateiendungen, __dirname-Ersatz, require(esm), Dual Packages und TypeScript.

mehr erfahren

Aktuelle Blog-Artikel

PHP-Migration nach PHP2Shell: Upgrade oder Sprachwechsel?

PHP2Shell und das Support-Ende von PHP 8.2: Was Sie jetzt patchen sollten, wie ein Upgrade auf 8.4 oder 8.5 gelingt und wann ein Sprachwechsel sinnvoll ist.

mehr erfahren

Jev: Was ein KI-Modell für schnelles Denken anders macht als ChatGPT

Das System-1-KI-Modell Jev schreibt keinen Text, sondern beantwortet Fragen mit kalibrierten Wahrscheinlichkeiten. Wie das funktioniert und wofür es taugt.

mehr erfahren

Node.js ohne Ballast: 12 Bordmittel, die npm-Pakete ersetzen

Von fetch() über node:test bis Type Stripping: zwölf Node.js-Funktionen, die axios, dotenv, Jest und Co. ersetzen, mit Status in Node 24 und 26 und Grenzen.

mehr erfahren

KI-Agenten verstehen: MCP, A2A, AG-UI und A2UI einfach erklärt

MCP, A2A, AG-UI und A2UI verständlich erklärt: Wie KI-Agenten Werkzeuge nutzen, miteinander arbeiten und Oberflächen erzeugen – und wer die Standards betreut.

mehr erfahren

Rusts Lieferkette unter Beschuss: Warum ein Angriff nur der Anfang war

Ein Angriff auf Rust-Pakete war im August 2026 schnell gestoppt, das Grundproblem bleibt. Wie crates.io angreifbar ist und was Sie heute dagegen tun können.

mehr erfahren

Webentwicklung ohne SPA: Eine Web-App mit V, Veb, SQLite und htmx

Am Beispiel der Meetup-Plattform Clash zeigt sich, wie eine Web-App mit V, Veb, SQLite und htmx ohne SPA-Framework entsteht und wo der Ansatz an Grenzen stößt.

mehr erfahren

React-Performance: Warum weniger Optimierung mehr Tempo bringt

React-Performance heute: Wie Sie mit State am richtigen Ort, dem React Compiler, Transitions, Virtualisierung und Messung Ihre Anwendung spürbar beschleunigen.

mehr erfahren

React-Komponenten verbinden: Welcher Weg passt wann?

Props, Context, Zustand, TanStack Query, URL-Parameter oder Ereignisse: So wählen Sie den passenden Weg, damit zwei React-Komponenten Daten austauschen.

mehr erfahren

KI-Agenten in der Schleife: Loops in Claude Code und Codex

Was ein Loop bei KI-Agenten ist, welche Auslöser es gibt und wie Sie geplante Aufgaben in Claude Code und Codex mit Kostenkontrolle einrichten.

mehr erfahren

JavaScript 2026: Bun, Deno und TypeScript 7 läuten eine neue Ära ein

Node.js, Bun und Deno im Wettbewerb, TypeScript 7 mit Compiler in Go, Build-Werkzeuge in Rust: Was sich 2026 bei JavaScript ändert und was Sie davon übernehmen.

mehr erfahren

npm-Pakete sicher prüfen: So bewerten Sie ein Paket vor dem Einbau

npm-Pakete sicher prüfen: wie Sie Name, Wartung, Provenance, Install-Skripte, bekannte Lücken und Lizenz bewerten, bevor ein Paket in Ihr Projekt kommt.

mehr erfahren

npm install unter der Lupe: Wie Angreifer die Lieferkette kapern

Was npm install technisch tut, welche Angriffsmuster von Typosquatting bis Dependency Confusion es ausnutzen und wie Sie das Installieren absichern.

mehr erfahren

Programmiersprachen und KI: Warum Rust für Code-Agenten so gut passt

KI-Agenten schreiben in Rust oft verlässlicheren Code, weil der Compiler viele Fehler sofort meldet. Was dahinter steckt und wo das Argument endet.

mehr erfahren

Pi Agent vs. Claude Code: minimaler Open-Source-Agent im Vergleich

Pi Agent und Claude Code im Vergleich: Architektur, Erweiterungen, Modellwahl, Lizenz, Kosten und Sicherheit. Für wen sich der Open-Source-Agent lohnt.

mehr erfahren

Agentic Engine Optimization: Websites für KI-Agenten lesbar machen

Agentic Engine Optimization: Wie KI-Assistenten Ihre Website abrufen, welche Rolle robots.txt, llms.txt und strukturierte Daten spielen – und was belegt ist.

mehr erfahren

Claude Skills für Einsteiger: eigene KI-Workflows aufbauen

Claude Skills bündeln wiederkehrende Anweisungen in einer SKILL.md-Datei. So bauen Sie Skills auf und installieren sie in Claude und Claude Code.

mehr erfahren

Claude Code richtig nutzen: 15 Funktionen, die Profis kennen sollten

Claude Code kann mehr als chatten: So setzen Sie CLAUDE.md, Subagenten, Hooks, Skills, MCP und den Headless-Modus gezielt im Entwickleralltag ein.

mehr erfahren

Claude Code für Einsteiger: vom Terminal zur fertigen Anwendung

Claude Code arbeitet im Terminal direkt mit Ihren Dateien. So gelingen Installation, erste Aufträge, Planmodus, Skills und MCP auch ohne Programmiererfahrung.

mehr erfahren

OpenClaw im Praxistest: vom Chatbot zum digitalen Assistenten

OpenClaw macht ein Sprachmodell zum selbst gehosteten Agenten mit Zugriff auf Rechner und Messenger. Aufbau, Einrichtung, Skills und Sicherheitsregeln.

mehr erfahren

Das Ende der Menüs: Wie KI die digitale Arbeitsumgebung verändert

Seit Jahrzehnten bedienen wir Computer über Fenster, Menüs und Ordner. KI-Agenten verschieben das zu Aufträgen in Alltagssprache. Was sich ändert und was nicht.

mehr erfahren

Microsoft und Rust: Was hinter dem Ziel „C und C++ bis 2030“ steckt

Microsoft nutzt Rust im Windows-Kernel, der Ersatz von C und C++ bis 2030 ist aber ein Forschungsziel. Was belegt ist und was es für Entwickler bedeutet.

mehr erfahren

TanStack Start: Das React-Framework als Alternative zu Next.js

TanStack Start ist ein Fullstack-Framework für React auf Basis von TanStack Router und Vite. Was es kann und wann es eine Alternative zu Next.js ist.

mehr erfahren

Die Ralph-Wiggum-Technik: KI-Coding-Agenten, die nicht aufgeben

Die Ralph-Wiggum-Technik lässt einen Coding-Agenten denselben Auftrag wiederholen, bis die Tests bestehen. Wie sie funktioniert und worauf Sie achten sollten.

mehr erfahren

Warum KI Entwickler nicht ersetzt, aber ihre Rolle verändert

KI-Assistenten schreiben heute viel Code. Warum Fachwissen trotzdem wichtiger wird und welche Fähigkeiten Entwickler:innen jetzt gezielt ausbauen sollten.

mehr erfahren

Von Node.js zu Bun: Next.js-Projekte schrittweise umstellen

Wie Sie Bun in Next.js einsetzen: von bun install über bun --bun next dev bis zum Deployment. Was dabei schneller wird, was nicht und was Sie vorher prüfen.

mehr erfahren

Bun erklärt: JavaScript-Laufzeit, Paketmanager und Bundler in einem

Bun ist Laufzeitumgebung, Paketmanager, Bundler und Testrunner in einem. Wie es funktioniert, wie kompatibel es zu Node.js ist und für wen es sich lohnt.

mehr erfahren

KI-Agenten richtig anleiten: Spezifikationen, die funktionieren

Spezifikationen für KI-Coding-Agenten wie Claude Code oder GitHub Copilot: welche Angaben hineingehören, wie Sie Aufgaben aufteilen und Grenzen setzen.

mehr erfahren

Was ist .NET? Die Microsoft-Plattform einfach erklärt

.NET ist Microsofts quelloffene Entwicklungsplattform für Web, Cloud, Desktop und Apps. Sie erfahren, wie Laufzeit, SDK und Versionen zusammenhängen.

mehr erfahren

Künstliche Intelligenz 2026: Vom Chatbot zum digitalen Kollegen

Rückblick auf den KI-Ausblick vom Januar 2026: acht erwartete Trends von Multi-Agenten-Systemen über physische KI und EU AI Act bis zu Quanten-Utility.

mehr erfahren

KI-Jahr 2025: Vier Erkenntnisse und ein Ausblick auf 2026

Rückblick vom Januar 2026 auf das KI-Jahr 2025: vier Entwicklungen von unauffälligen Agenten bis zum Chipmangel und was sie damals für 2026 erwarten ließen.

mehr erfahren

REST und Event-Streams: Wann sich ereignisbasierte Backends lohnen

REST oder Event-Streams? Wie sich Request/Response und Publish/Subscribe unterscheiden, wann Kafka, SSE oder WebSockets passen und wo REST richtig bleibt.

mehr erfahren

Shai-Hulud 2.0: Wie sich ein Wurm im November 2025 durch npm fraß

Shai-Hulud 2.0 einfach erklärt: Rückblick auf den npm-Wurm vom November 2025, wie er Zugangsdaten stahl, sich selbst verbreitete und wie Sie sich schützten.

mehr erfahren

HTMX: Moderne Webanwendungen ohne JavaScript-Framework bauen

HTMX lädt Inhalte nach, sendet Formulare und tauscht Seitenteile per HTML-Attribut aus. Die Anleitung zeigt Browser- und Serverseite und den Stand von HTMX 4.

mehr erfahren

Electron vs. Tauri: Desktop-Apps mit Webtechnik im Vergleich

Electron bringt Chromium und Node.js mit, Tauri nutzt den Webview des Systems und einen Kern in Rust. Der Vergleich zeigt, wann sich welches Framework eignet.

mehr erfahren

Architekturkompetenz im KI-Zeitalter: Was Full-Stack heute heißt

Wenn KI-Werkzeuge Code schreiben, verschiebt sich die Arbeit zu Architekturentscheidungen. Welche Fähigkeiten zählen und wie Sie sie gezielt aufbauen.

mehr erfahren

Omarchy im Test: So macht Linux endlich wieder Spaß

Unser Test von Omarchy aus dem November 2025: Das Linux auf Basis von Arch und Hyprland setzt auf Tastatur, Kachelfenster und abgestimmte Themes.

mehr erfahren

JWT-Probleme: Warum Entwickler vor JSON Web Tokens warnen

JWT-Probleme im Überblick: Warum sich Tokens schwer widerrufen lassen, welche Prüffehler gefährlich sind und wann klassische Sessions die bessere Wahl sind.

mehr erfahren

7 KI-Begriffe erklärt: Von KI-Agenten bis Superintelligenz

Sieben KI-Begriffe von KI-Agenten über RAG und MCP bis Superintelligenz: was sie bedeuten, wie sie zusammenhängen und was davon für Unternehmen zählt.

mehr erfahren

Machine Learning verstehen: von den Grundlagen bis zu moderner KI

Machine Learning verständlich erklärt: welche Lernverfahren es gibt, wie Training mit Daten abläuft und wie Sie prüfen, ob ein Modell wirklich etwas taugt.

mehr erfahren

Scrum-Master-Rolle auf dem Prüfstand: ein Blick aus Architektursicht

Lohnt sich ein Scrum Master noch? Wir betrachten die Rolle aus Sicht der Softwarearchitektur, gleichen sie mit dem Scrum Guide 2020 ab und zeigen Alternativen.

mehr erfahren

Was dürfen wir für Sie tun?

So sind wir zu erreichen: