Die Evolution des Frontends: Svelte & SvelteKit im Schatten der Giganten

Ach ja, jedes Mal, wenn ich mir vorstelle, dass es noch ein weiteres Framework oder eine Library gibt, die behauptet, das Rad neu zu erfinden, möchte ich am liebsten den Laptop zuklappen und einen Kaffee trinken gehen. Aber, hier bin ich und ich muss zugeben: Mit Svelte habe ich eine besondere Beziehung. Tatsächlich haben wir uns schon mit der Version 0.1.0 von Svelte befasst. Für eine Alpha super-stabil. Früher Anwender, early adopter, nennen Sie es, wie Sie wollen.

React und Angular, sicher, die haben ihren festen Platz. Aber als jemand, der Svelte von seinen frühesten Tagen an begleitet hat, kann ich nicht anders als ein wenig nostalgisch zu werden und darüber nachzudenken, wie weit es gekommen ist.

Nehmen wir unser einfaches Counter-Beispiel. Bei React haben wir:

 

				
					import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

				
			

Angular, wie immer ein wenig komplexer:

				
					import { Component } from '@angular/core';

@Component({
  selector: 'app-counter',
  template: `
    <p>Count: {{ count }}</p>
    <button (click)="increment()">Increment</button>
  `
})
export class CounterComponent {
  count = 0;

  increment() {
    this.count++;
  }
}

				
			

 

Aber dann kommt Svelte ins Spiel, und alles wird so herrlich einfach:

				
					<script>
  let count = 0;

  function increment() {
    count++;
  }
</script>

<p>Count: {count}</p>
<button on:click={increment}>Increment</button>

				
			

Vielleicht hat dieses frühe Eintauchen in Svelte mir eine andere Perspektive gegeben. Aber vielleicht, nur vielleicht, ist Svelte tatsächlich das Tool, das die Entwicklung weniger ermüdend und vorhersehbar macht. Ob es sich gelohnt hat, so früh auf den Zug aufzuspringen? Das bleibt abzuwarten.

 

App-Struktur und State-Management

Warum wir uns ständig fragen, ob weniger wirklich mehr ist.

Wenn man anfangs von einer Technologie wie Angular kommt, wo Struktur und Konventionen den Tag beherrschen, dann ist der Einstieg in React oft erfrischend. Wir liebten die Flexibilität, die uns React bot. Aber gleichzeitig führte diese Freiheit oft zu stundenlangen Diskussionen in unserem Team darüber, welche Struktur oder welches State-Management-Tool am besten ist. Redux, MobX oder Context? Die Entscheidungen schienen endlos.

Dann stießen wir auf Svelte. Da wir schon seit der Alpha dabei sind, haben wir den Reifeprozess hautnah miterlebt. Was uns an Svelte sofort auffiel war die Simplizität. Keine Notwendigkeit, eine ganze Bibliothek hinzuzufügen, um Zustände zu verwalten. Alles ist reaktiv, und die Syntax ist so intuitiv, dass es manchmal schon komisch ist.

Schauen wir uns ein einfaches Beispiel an, um das State-Management in den verschiedenen Frameworks zu vergleichen.

In React, mit Context:

				
					import React, { createContext, useContext, useState } from 'react';

const CountContext = createContext();

function CounterProvider({ children }) {
  const [count, setCount] = useState(0);
  return (
    <CountContext.Provider value={{ count, setCount }}>
      {children}
    </CountContext.Provider>
  );
}

function useCount() {
  return useContext(CountContext);
}

				
			

 

In Angular, mit Services und Dependency Injection:

				
					import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class CounterService {
  private _count = new BehaviorSubject<number>(0);
  count$ = this._count.asObservable();

  increment() {
    this._count.next(this._count.value + 1);
  }
}

				
			

 

Und dann, in Svelte:

				
					<script>
  let count = 0;

  function increment() {
    count++;
  }
</script>

				
			

Es fühlte sich fast zu einfach an. Wo war der Haken? Wir warteten auf den Moment, in dem wir feststellten, dass wir eine massive Library benötigen würden, um Dinge zum Laufen zu bringen. Aber dieser Moment kam einfach nicht.

Müssen zugeben, dass es Momente gibt in denen wir die Komplexität von React und Angular vermissen. Klingt crazy, oder? Aber wenn man ständig darauf trainiert ist, Dinge auf eine bestimmte Weise zu tun, kann zu viel Einfachheit manchmal einschüchternd sein. Doch am Ende des Tages schätzt man die klare, unkomplizierte Herangehensweise von Svelte und die Tatsache, dass es uns ermöglicht, auf das zu konzentrieren, was wirklich wichtig ist: das Erstellen großartiger Anwendungen.

 

Performance und Bundle-Größe

Leichter, schneller, Svelte?

Nachdem wir uns an die unkomplizierte Natur von Svelte gewöhnt hatten, tauchte eine Frage auf, die sich jedes Entwicklerteam irgendwann stellt: Was ist mit der Performance? In der heutigen Zeit der Mobilgeräte und der erwarteten Sofortreaktionen sind Ladezeiten und schnelle Reaktionen der Anwendungen nicht nur wünschenswert, sondern absolut notwendig.

React und Angular haben ihre eigenen Ansätze zur Optimierung der Performance. React mit seinem virtuellen DOM und Angular mit seinem Change Detection Mechanismus. Diese Konzepte sind gut, aber sie kommen mit einer gewissen Menge an Overhead, sowohl in Bezug auf die Lernkurve als auch auf die tatsächliche Codegröße und Ausführung.

Svelte verfolgt hier einen anderen Ansatz. Es gibt keinen virtuellen DOM. Tatsächlich macht Svelte die meiste Arbeit zur Kompilierungszeit und liefert den kleinstmöglichen Code, um die gewünschte Funktionalität zu erreichen. Das Ergebnis? Oftmals kleinere Bundles und eine verbesserte Ausführungsperformance.

Ein einfaches To-Do-App-Bundle:

– React (mit Create React App): ~120KB (nach Gzip)

– Angular (mit Angular CLI): ~130KB (nach Gzip)

– Svelte (mit Rollup): ~12KB (nach Gzip)

Natürlich variieren diese Werte je nach der Komplexität der Anwendung und den verwendeten Abhängigkeiten, aber der Trend ist klar: Svelte-Apps neigen dazu deutlich leichter zu sein.

Aber nicht alles ist Sonnenschein und Regenbögen. Bei größeren Anwendungen könnten die Unterschiede in der Bundle-Größe weniger auffällig sein. Außerdem gibt es Situationen, in denen die umfangreichen Ökosysteme und Optimierungen von React und Angular tatsächlich Vorteile bieten können, insbesondere bei sehr großen und komplexen Anwendungen.

Allerdings ist für uns der entscheidende Punkt, dass wir mit Svelte nicht ständig an Performance denken müssen. Es ist, als ob uns jemand einen Freipass gegeben hätte, uns weniger Gedanken um Bundle-Größen und Ladezeiten zu machen und uns mehr auf das eigentliche Produkt zu konzentrieren.

 

Community & Ökosystem

Das pulsierende Herz hinter jedem Framework

In der Entwicklerwelt ist das Framework oder die Library nur so gut wie die Community, die dahinter steht. Wir alle kennen den Wert eines aktiven Ökosystems, in dem Fragen schnell beantwortet werden, Plugins für so ziemlich alles verfügbar sind und die Dokumentation klar ist.

React und Angular sind hier unbestreitbare Giganten. Dank ihrer jahrelangen Dominanz und Unterstützung von großen Unternehmen wie Facebook und Google haben sie riesige Communities aufgebaut. Suchen Sie eine Lösung für ein spezifisches Problem in React oder Angular? Die Chancen stehen gut, dass jemand anders bereits eine Lösung oder zumindest einen Workaround gefunden hat.

Svelte, obwohl jünger und ohne das Backing eines Tech-Riesen, hat beeindruckende Fortschritte gemacht. Seit unseren Anfängen mit der Alpha haben wir beobachtet, wie die Community stetig gewachsen ist. Diskussionen über Svelte sind in Foren, auf Stack Overflow und in Social Media immer häufiger geworden.

Die Svelte-Dokumentation ist ein weiteres Highlight. Einfach zu folgen und mit interaktiven Beispielen versehen, macht sie das Lernen zum Vergnügen. Die Community rund um Svelte erstellt ständig neue Bibliotheken und Tools, die speziell für das Framework entwickelt wurden.

Trotzdem gibt es Bereiche, in denen Svelte noch hinterherhinkt. Es gibt nicht für jedes Problem eine vorgefertigte Lösung oder ein Plugin, und manchmal muss man von Grund auf neu bauen. Das ist natürlich sowohl ein Fluch als auch ein Segen. Auf der einen Seite gibt es weniger „Out-of-the-Box“-Lösungen, auf der anderen Seite bietet dies die Möglichkeit, wirklich maßgeschneiderte Lösungen für spezifische Anforderungen zu entwickeln.

Eines müssen wir jedoch betonen: Die Begeisterung und das Engagement der Svelte-Community sind ansteckend. Es fühlt sich immer noch ein bisschen an wie die „Wild West“ der Entwicklung, und das macht Spaß. Es ist spannend, Teil einer wachsenden Bewegung zu sein und zu sehen, wie sie sich formt und weiterentwickelt.

 

Unsere Erfahrungen mit verschiedenen Use Cases

Komponenten im SAP Design Studio (heute SAP Lumira)

Eines der ersten Projekte, in denen wir Svelte einsetzten, war die Integration von Komponenten im SAP Design Studio. Trotz des Umstiegs auf SAP Lumira blieb die Wichtigkeit der Flexibilität von Svelte bestehen. Es ermöglichte uns, leichtgewichtige und effiziente Komponenten zu erstellen, die nahtlos in die SAP-Umgebung integriert werden konnten. Dies hat die Performance und Benutzerfreundlichkeit unserer Tools erheblich verbessert.

 

Webseiten und Web-Apps

Wenn es um die allgemeine Webentwicklung geht, hat sich Svelte als echter Gamechanger erwiesen. Webseiten, die mit Svelte erstellt wurden, sind nicht nur blitzschnell, sondern auch bemerkenswert reaktiv. Bei der Erstellung von Web-Apps konnten wir den wirklichen Nutzen von Svelte’s reaktivem System nutzen, was zu einer intuitiveren und effizienteren Benutzererfahrung führte.

 

SaaS-Plattform

Vielleicht unser ambitioniertestes Projekt mit Svelte war der Bau einer kompletten SaaS-Plattform. Es war mehr als ein Test für das Framework, um zu sehen, ob es den Anforderungen und der Komplexität einer vollständig funktionierenden Plattform standhalten kann. Trotz der Komplexität und des Umfangs des Projekts stießen wir nur auf wenige Hindernisse. Svelte lieferte in Bezug auf Performance, Skalierbarkeit und Entwicklerfreundlichkeit.

 

Ein Blick in die Zukunft

Svelte's und SvelteKit's Platz in der Entwicklungslandschaft

Wenn man über die Zukunft von Technologien in der Entwicklergemeinschaft spricht, bewegt man sich immer auf dünnem Eis. Vorhersagen können schwierig sein, insbesondere in einer Branche, die sich so rasant entwickelt. Aber basierend auf unserer Erfahrung und unserer Beobachtung des Marktes haben wir ein paar Gedanken, wie sich Svelte und SvelteKit im Vergleich zu React und Angular entwickeln könnten.

Das Momentum von Svelte: Es ist schwer zu leugnen, dass Svelte in den letzten Jahren erhebliches Momentum gewonnen hat. Neue Entwickler finden sich oft von seiner Einfachheit und dem Versprechen einer besseren Performance angezogen. Die Begeisterung, die wir in der Community sehen, erinnert uns an die frühen Tage von React, als es gerade erst anfing die Aufmerksamkeit der Massen zu erregen.

SvelteKit – Das Next-gen Framework: Während Svelte viele durch seine Simplizität begeistert, bringt SvelteKit das Ganze auf die nächste Stufe. Es bietet ein umfassendes Framework für den Bau von Anwendungen mit Funktionen wie Server-side Rendering, Routing und mehr, alles in einem schlanken und optimierten Paket. Es hat das Potential, Svelte von einem einfachen UI-Framework zu einem kompletten Lösungsanbieter für Webanwendungen zu transformieren.

Große Unternehmen und Svelte: Bisher hat Svelte nicht das gleiche Maß an Adoption durch große Unternehmen gesehen, wie es React und Angular haben. Das Fehlen eines großen Unternehmens als Förderer könnte als Nachteil angesehen werden. Aber wer sagt, dass dies so bleiben wird? Mit SvelteKit, das die Entwicklung vereinfacht und beschleunigt, könnten wir sehen, dass größere Unternehmen und Projekte auf den Zug aufspringen.

Interoperabilität und Integration: Eines der Dinge, die wir lieben, ist die Fähigkeit von Svelte und SvelteKit, gut mit anderen Technologien zu spielen. Wir können Teile einer App in Svelte und andere in React oder Angular haben, je nachdem, was am besten für den jeweiligen Anwendungsfall geeignet ist. Diese Flexibilität könnte ein entscheidender Faktor für die zukünftige Akzeptanz von Svelte und SvelteKit sein, insbesondere in bestehenden Projekten und Unternehmen.

Nische oder Mainstream? Wird Svelte oder SvelteKit jemals so populär wie React oder Angular? Das ist die Frage. Es könnte sein, dass sie eine bestimmte Nische oder einen bestimmten Sektor der Entwicklercommunity ansprechen und dort dominiert. Oder sie könnten ihr Wachstum fortsetzen und eine größere Rolle in der allgemeinen Dev-Szene spielen.

Was wir sicher sagen können, ist, dass Svelte – von den Tagen der Version 0.1.0 bis heute – kontinuierlich beeindruckt hat, und SvelteKit scheint bereit zu sein, diese Fackel weiterzutragen. Es hat unsere Erwartungen immer wieder übertroffen und uns gezeigt, dass es in der Welt der Webentwicklung immer Platz für Innovation und frische Ansätze gibt.

 

 

Egal, welches Framework oder welche Library Ihr Favorit ist, das Wichtigste ist, dass es den Anforderungen Ihres Projekts entspricht und Ihnen ermöglicht, effektiv und effizient zu arbeiten. Für uns haben Svelte und jetzt SvelteKit oft genau das geliefert. Und während wir die Zukunft nicht vorhersagen können, freuen wir uns darauf, zu sehen, wohin die Reise von Svelte und SvelteKit als nächstes führt.

Cheers ✌️

Weitere Blogs