Es gibt eine gewisse Ironie bei Jamstack.
Das Konzept ist einfach: Sie legen vorgerenderte, statische Dateien auf einen Webhosting-Dienst (ein CDN), der dafür gut ausgelegt ist. Das war's. Wenn Sie mehr tun müssen, geschieht alles weitere mit clientseitigem JavaScript, das wahrscheinlich mit serverlosen Funktionen spricht, da dies der spirituelle Partner von Jamstack im Backend ist. Ich habe Guillermo Rauch neulich auf der Smashing Conf sagen hören, dass es keine exakte "Stack" ist, da es fast vollständig nicht vorschreibend ist, was Sie tun. Während ich das Wort Jamstack mag, fühlt sich das auch fair an.
Die Ironie ist, dass, während das Konzept einfach ist, diese Einfachheit die Ursache für Komplexität sein kann.
Netlify, das Unternehmen, das größtenteils hinter Jamstack steckt, weiß das. Sie wissen, dass ohne einen Backend-Server mit Backend-Sprachen etwas wie ein einfaches Kontaktformular kompliziert wird. Anstatt im Bereich unkomplizierter, gelöster Probleme zu sein, müssen wir einen anderen Weg finden, dieses Formular zu verarbeiten. Also lösen sie dieses Problem für Sie (neben anderen, wie Authentifizierung und serverlose Funktionen). Aber es gibt unzählige andere Unternehmen, die dieses Zahnrad in Ihrer Maschine sein wollen.
Das ist nur eine mögliche Komplikation. Was verwenden Sie für ein CMS oder anderen Datenspeicher? Wie sieht Ihr Build-Prozess aus? Wie sehen Sie Vorschauen von Inhaltsänderungen? Wie machen Sie die Authentifizierung? Was ist, wenn Sie ein schickes Kalender-Widget benötigen? Was ist, wenn Sie etwas verkaufen möchten? Alles, was eine Website tun kann, für Jamstack gibt es eine Antwort – es ist nur so, dass die Kombination all dieser Antworten sich zerstückelt und potenziell verwirrend anfühlen kann.
Dave hat sich kürzlich damit beschäftigt Eleventy + Tailwind + Netlify CMS (was Jamstack-mäßig ist) und sagte, es fühlte sich an wie das Hüten von Rindern
Meine kleine Mischung, die nur aus 3 Technologien bestehen sollte, setzte mich ~20 verschiedenen Technologien aus und ließ mich nach Mitternacht in den Quellcode von Abhängigkeiten der n-ten Ebene eintauchen. Wenn es eine Allegorie für das gibt, was ich an der modernen Webentwicklung nicht mag, dann ist es diese. Sie wollen drei Werkzeuge verwenden, aber Sie müssen stattdessen zwanzig Werkzeuge bedienen können. Wenn Module und Komponenten wie LEGO sind, dann ist das, als würde man die gesamte Kiste auf den Boden kippen, nur um ein winziges Teil zu finden, das man braucht.
„Die verwobenen Netze, die wir weben“, in der Tat.
In einem Gespräch zwischen Richard MacManus und Matt Mullenweg¹ zitiert Richard Matt
Sie können ein Dutzend Dienste, jeder mit seinem eigenen Konto und seiner eigenen Abrechnung, für Hunderte von Dollar pro Monat zusammenfügen, um ein ähnliches Ergebnis zu erzielen, das Sie für ein paar Dollar pro Monat mit WordPress auf Shared Hosting erzielen würden", sagte er. "Und es wäre zerbrechlicher, weil die Kette nur so stark ist wie ihr schwächstes Glied. Sie verketten verschiedene Toolsets, Logins, Abrechnungen, Hosting… jeder Teil davon, der ausfällt, kann den gesamten Ablauf zum Erliegen bringen.
Wenn ich Jamstack für ein bestimmtes Projekt in Betracht ziehen würde und die Gesamtsumme wirklich zwölf Dienste wären, würde ich wahrscheinlich überdenken, insbesondere wenn ich ein Werkzeug wie WordPress greifen und es auf eins reduzieren könnte. Es gibt viele andere faire Kritikpunkte an Jamstack, insbesondere da es sich noch in der Anfangsphase befindet. Die Geschichte von "CMS mit Vorschau" ist zum Beispiel nicht besonders gut, was eine Funktion ist, über die man bei WordPress gar nicht nachdenkt, weil es das offensichtlich hat.
Und Jamstack kann einige Dinge tun, die sehr fortschrittlich sind und die ich schätze. Git-basierte Bereitstellung? Alle Websites sollten das haben. Vorschauen meiner Pull-Requests? Verdammt gut. Erste Anfragen unter -100 Millisekunden? Ja, bitte. Kein Ärger mehr mit dem Cache? Super. Holt auf, andere Stacks.
Ich sage, es gibt hier "Goldlöckchen"-Entscheidungen zu treffen. Sie treffen sie, indem Sie tun, was Sie wahrscheinlich ohnehin schon tun: Ihre Erwachsenenhosen anziehen, darüber nachdenken, was Ihr Projekt braucht, und die beste Option wählen.
Ich habe produktive WordPress-Websites. Wie diese hier! Es ist großartig!
Ich habe produktive Jamstack-Websites. Wie diese hier! Es ist kein kompliziertes Netz von Diensten. Es ist ein statischer Website-Generator mit Inhalten im GitHub-Repository, bereitgestellt mit Netlify. Während CSS-Tricks etwa 100 Dinge tun kann, die diese Seite nicht kann, hat sie einige Tricks auf Lager, die CSS-Tricks nicht kann, wie z. B. das Akzeptieren von Pull-Requests für Inhalte.
Ich habe das Gefühl, dass ich in allen meinen Fällen ziemlich gut gewählt habe.
- Während Matt eindeutig Anreize hat, den WordPress-Ansatz zu verteidigen, habe ich das Gefühl, dass die hier geäußerten Meinungen aufrichtig sind; teilweise, weil Automattic in alternative Stack-Ansätze investiert, und weil WordPress und Jamstack nicht gegenseitig ausschließend sind. Ich habe Antworten darauf genossen, wie Ohad Eder-Pressmans offener Brief, der ebenfalls voller auf Anreize basierender, aber aufrichtiger Gedanken ist.
Ich denke, Sie sollten Publii ausprobieren, es ist ein großartiges statisches CMS, das lokal funktioniert.
Ich frage mich, ob es nicht ein bisschen ein "lokales Optimum"-Problem bei Jamstack gibt, in dem wir uns auf dieses spezifische Muster konzentriert und es immer weiter verfeinert haben, ohne zu bedenken, dass es vielleicht nicht immer die beste Wahl ist (wie dieser Artikel aufzeigt).
Deshalb mag ich persönlich, was Next.js tut, indem es sowohl den "traditionellen" statischen Ansatz unterstützt, aber auch dynamisches serverseitiges Rendering und sogar (so wie ich es verstehe) hybride Apps, die eine Mischung aus beidem enthalten.
Ja. Hier investiere ich derzeit meine Zeit und Energie.
Ich stimme zu…
Nextjs + Vercel scheint der Zeit voraus zu sein?
Ich stimme diesem Artikel zu. Das größte Problem, das ich derzeit mit Jamstack habe, ist, dass ich, wenn ich mehr als nur ein paar statische Seiten mit ein paar dynamischen Elementen machen möchte, auf einen der vielen Startup-Dienste zurückgreifen muss, die das Loch notdürftig flicken. Und all diese kleinen Unternehmen haben unsichere Zukunftsaussichten, wie die meisten Startups, und ich würde wichtige Teile meiner Website (einschließlich Hosting und Formulare) mehreren Unternehmen anvertrauen, die in 2-3 Jahren vielleicht nicht mehr existieren.
Also begann der Kampf zwischen JamStack und WordPress. JamStack ist erstaunlich, aber das aktuelle Szenario macht es nur zur idealen Wahl für Entwickler. Für diejenigen, die wenig oder keine Programmiererfahrung haben, ist WordPress gut.
Ja, viele Jamstack-Projekte entwickeln sich von "Wow, es ist so einfach und glänzend!" zu "Hoppla, wie sind wir dazu gekommen, zehn Dienste zusammenflicken zu müssen, um das zum Laufen zu bringen?".
Hier könnten statische WordPress-Produkte und -Dienste helfen, die Lücke zu schließen. Ich beziehe mich nicht auf den Headless-Ansatz von WP, der cool ist, aber viele der Vorteile verliert, die WP bietet, wie die von Ihnen erwähnten Vorschauen. Vielmehr die Dienste, die es Benutzern ermöglichen, WP wie gewohnt zu nutzen und das CMS, den Build, die Vorschauen usw. alles in einem zu vereinen und dann auf eine Jamstack/statische Architektur bereitzustellen. Ein Beispiel dafür ist Strattic (ich bin der CEO), eine statische Hosting- und Publishing-Plattform für WP, so dass unsere Benutzer ihre WP-Seite wie gewohnt verwalten und mit einem Klick auf statisch bereitstellen.
Korrigieren Sie mich, wenn ich falsch liege, ich würde wirklich gerne einen Artikel zu diesem Thema sehen
Das Problem mit dem Konzept, nur statische Dateien zu verwenden und sich nur auf clientseitiges JS zu verlassen, ist, dass das Endergebnis von den meisten Bots nicht gecrawlt werden kann.
Ich sage die meisten, weil Google erst vor kurzem mit der Verarbeitung von Javascript begonnen hat. Aber die meisten Crawler tun das immer noch nicht und sie erwarten, dass der vom Server abgerufene Inhalt alle notwendigen Daten enthält.
Was nicht passiert, wenn Sie kein serverseitiges Rendering haben.
Wie kämpft Jamstack dagegen an, wenn es keinen Server gibt, der den Seiteninhalt dynamisch rendert?
Es ist lustig, wie sich die Wahrnehmung von Jamstack verändert hat. Ich habe das Gefühl, in den frühen Tagen ging es nur darum, dass "Jamstack nur für statische Website-Generatoren gut ist", die für SEO wunderbar sind. Ich denke, es ist absolut berechtigt, sich Sorgen um SEO zu machen, wenn Sie ausschließlich clientseitiges Rendering durchführen. Ich würde sagen, wenn Ihnen SEO wirklich wichtig ist, finden Sie einen Weg, um sicherzustellen, dass Ihr Inhaltsmarkup bei der ersten Anfrage für das HTML vorhanden ist. Rendern Sie so viel wie möglich vor. Finden Sie einen Weg. Schauen Sie sich diese neue Art von "Edge Handlern" / "Edge Workers" an, ich denke, das wird ein riesiges Konzept sein. Sie können Dinge wie Ajax-Anfragen auf CDN-Ebene durchführen, bevor das HTML überhaupt heruntergeladen wird. Große Chance, dynamische Dinge zu tun und SEO nicht zu beeinträchtigen.