Dieser Beitrag am Freitag widmet sich der Übersetzung eines interessanten Artikels, der gestern auf 
Medium veröffentlicht wurde . Ich habe mich entschlossen, ein neues Genre von Übersetzungen für mich selbst zu lernen. Bitte treten Sie nicht viel, wenn irgendwo etwas nicht stimmt. Und wenn möglich, benachrichtigen Sie sogar über Fehler und Tippfehler in PM.
Danke und gute Lektüre!
Eine Geschichte darüber, wie die neuen Funktionen der Webplattform und kompilierten Frameworks die nächste Ära der Webentwicklung definieren.

Foto: 
Stefan BucherHeute sind Frameworks wie 
Angular , 
React und 
Ember der Schlüssel zur Entwicklung komplexer Webanwendungen. In den letzten zehn Jahren ( 
Angular wurde 2010 veröffentlicht) ist die Verwendung dieser Frameworks für viele von uns zum De-facto-Standard geworden. Sie helfen uns, unseren Code zu strukturieren, den Status von Anwendungen zu verwalten und komplexe Schnittstellen basierend auf wiederverwendbaren Komponenten zu erstellen.
Wie Sie wissen, ist JavaScript jedoch die teuerste Webressource, die sich direkt auf die Interaktivität unserer Seiten auswirkt. Und der JavaScript-Code unserer Webanwendungen ist größer als je zuvor. Die durchschnittliche Webseite ist größer als 3 MB, was größer ist als die Größe des ursprünglichen Doom-Spiels. Wir als Entwickler können schnelles Internet und erschwingliche Tarifpläne haben, aber unsere Benutzer haben möglicherweise nicht all dies.
Laut 
Alex Russell kann das Überschreiten der Größe von nur 130 KB für alle unsere Ressourcen dazu führen, dass das 5-Sekunden-Downloadintervall in einem Standardtelefon und einem Mobilfunknetz nicht eingehalten werden kann. Einige unserer bevorzugten Frameworks benötigen jedoch möglicherweise mehr für sich.
Können wir die Vorteile nutzen, die Frameworks uns bieten, aber gleichzeitig vermeiden, den Code aufzublähen? Haben Sie Komfort für den Entwickler und gleichzeitig eine hervorragende Benutzererfahrung? Ich glaube daran. Und ich glaube, dass wir in eine neue Ära der Webentwicklung eintreten, die davon bestimmt wird ... Eine Ära, in der unsere Frameworks zu verschwinden beginnen.
Svelte
Ein Beispiel für diesen Trend ist 
Svelte , „das magisch verschwindende UI-Framework“ (Artikel „Das magisch verschwindende UI-Framework“ 
auf Habré - ca.).
 Svelte
Svelte ist ein Framework zur "Kompilierungszeit", das keine bestimmte Laufzeit auf dem Client hat. Wir sind es gewohnt, große JavaScript-Pakete an unsere Benutzer zu senden und erwarten von ihren Browsern, dass sie Skripte analysieren und ausführen. Aber so funktioniert 
Svelte nicht. Stattdessen kompiliert es Ihre Anwendung in kleine, eigenständige Vanille-JavaScript-Module. Mit anderen Worten, 
sobald die Anwendung an Ihre Benutzer geliefert wird, wird 
Svelte verschwinden!
Ein Beispiel für eine Anwendung, die mit 
Svelte entwickelt wurde, ist 
Pinafore , ein 
Mastodon PWA-Client für das von 
Nolan Lawson von Microsoft erstellte dezentrale soziale Netzwerk. Pinafore zeigt 
sehr schnelle Ergebnisse im Webseitentest und eine Punktzahl von 98 Punkten im 
Leuchtturm .
Svelte an sich ist sehr minimalistisch, aber es gibt auch 
Sapper ( 
S velte 
App Maker - ca.) - ein darauf basierendes Framework mit vollem Funktionsumfang. 
Sapper wurde von Next.js inspiriert und umfasst serverseitiges Rendern, Codetrennung, Stile mit Gültigkeitsbereich, deklaratives Routing und Hot-Reload. Darüber hinaus bietet die 
Sapper- Startervorlage standardmäßig PWA mit einem Webanwendungsmanifest und einem Servicemitarbeiter mit automatischem Ressourcen-Caching.
Ich fragte Nolan, wie er sich mit 
Svelte und 
Sapper fühle. Er sagte mir, es sei ein „Traum, mit 
Svelte zu arbeiten“. 
Sapper ist "etwas weniger reif" und hatte einige Probleme mit ihm, aber er ist auch zufrieden. Ich habe auch begonnen, diese beiden Frameworks für ein neues Projekt zu verwenden, und bis jetzt fühlt sich die Kombination aus Funktionalität und hoher Betriebsgeschwindigkeit wirklich perfekt an.
Schablone
Svelte inspirierte ein alternatives Projekt von Ionic: 
Stencil .

Auch hier ist das Ziel, die „besten Konzepte der beliebtesten Frameworks“ zu übernehmen und gleichzeitig eine bessere Leistung zu erzielen:
"Mit ... traditionellen Frameworks und Bündelungstechniken hatte das Team Probleme, die Anforderungen an Latenz und Codegröße für Progressive Web Apps zu erfüllen, die in schnellen und langsamen Netzwerken auf einer Vielzahl von Plattformen und Geräten gleich gut funktionieren." - stenciljs.com
Um zu verstehen, woraus 
Schablone besteht, fand ich eine nützliche 
Einführung von Rob Bearman . Es gibt auch ein 
Video von 
Maximilian . Das Ergebnis von 
Stencil ist eine Standard-Webkomponente (mehr zu Webkomponenten weiter unten), die nicht spezifisch für 
Stencil ist . Dies bedeutet, dass Sie es in Kombination mit einem anderen Framework verwenden können, wenn Sie möchten (in diesem Artikel geht es jedoch darum, wie Frameworks verschwinden und nicht multiplizieren!).
Unabhängig davon möchte ich darauf hinweisen, dass trotz der Tatsache, dass die 
Svelte- Dokumentation dies nicht besonders beachtet, die 
Svelte- Komponente auch direkt in die 
Webkomponente kompiliert werden kann ( 
hier ein Beispiel - wenn Sie 
hier customElement festlegen - erhalten 
wir das Ergebnis ). 
Rich Harris , der Schöpfer von 
Svelte (und 
Rollup und vielen anderen erstaunlichen Dingen!), Sagte mir jedoch, dass er der Meinung sei, dass die Verwendung dieser Funktion im Moment keine besonderen Vorteile habe.
Stencil sieht ebenfalls aus wie Googles bekannteres 
Polymer , verschwindet jedoch beim Beenden vollständig. Ich habe Polymer jedoch nicht zu oft verwendet, um es genauer zu kommentieren. Vielleicht verdient er auch mehr Aufmerksamkeit. In der neuesten 
dritten Version wurden ES-Module (mehr dazu weiter unten) anstelle von 
HTML-Importen und 
npm anstelle von 
Bower verwendet . Es gibt auch ein 
PWA Starter Kit , das 
Alex Russell als bestes Tool zum Erstellen produktiver Webanwendungen empfiehlt. Sie erhalten 
sofort ein 
PRPL- Muster (Push, Render, Pre-Cache, Lazy-Load).
Winkel der nächsten Generation
Vielen Dank an Rich Harris, der mich wissen ließ, dass Angular auch diesem Trend folgt! 
Mit Angular Elements - einer Innovation in 
Angular 6 - können Sie Angular-Komponenten als selbstoptimierende Webkomponenten exportieren. Derzeit ist noch eine "minimale, eigenständige Version von Angular" erforderlich, aber sie "arbeiten mit benutzerdefinierten Elementen, die in Webanwendungen verwendet werden können, die auf der Grundlage anderer Frameworks erstellt wurden".

 Darüber hinaus ist 
Ivy ein Renderer der neuen Generation in Angular, mit dem die Größe des resultierenden Codes drastisch reduziert werden soll. (Obwohl es immer noch einen Blick wert ist: Im Geiste eines freundlichen Wettbewerbs hat Rich 
die Kompilierungsergebnisse 
von Webkomponenten von Svelte und Ivy 
verglichen !)
Es ist sehr cool, dass beliebte Frameworks diesen Ansatz verfolgen und ihren endgültigen Code auch kompakter machen. Wir hoffen, dass immer mehr Webanwendungen einen neuen Ansatz verfolgen und dies einen großen Einfluss auf die Leistung des gesamten Internets haben wird.
Darüber hinaus gibt es immer mehr Voraussetzungen dafür, dass wir bald überhaupt keine Frameworks mehr benötigen. Frameworks können natürlich die Entwicklung vereinfachen und weiterhin nützliche Add-Ons bereitstellen, aber die Webplattform selbst bietet mehr Funktionen als je zuvor ...
Webplattform als Framework
In meinem Artikel 
„A Rube Goldberg Machine“ und dem 
anschließenden Gespräch beschrieb meine Kollegin 
Ada Rose Cannon , wie neue CSS- und JavaScript-Funktionen „als in die Webplattform eingebettete Frameworks betrachtet werden können“.
Beispielsweise können benutzerdefinierte CSS-Eigenschaften (besser bekannt als CSS-Variablen) bedeuten, dass Sie keinen CSS-Precompiler wie 
Sass mehr benötigen. Und CSS Grid kann Sie jetzt vor dem Laden von Bootstrap bewahren.
„Sie benötigen kein Framework, um CSS Grid zu verwenden. CSS Grid ist ein Framework. “
- Rachel Andrew
Webkomponenten
Webkomponenten sind besonders stark und der Schlüssel zu einem Großteil dieses Trends. Sie enthalten die folgenden Funktionen - Benutzerdefinierte Elemente, Shadow DOM und HTML-Vorlagen - 
sind noch nicht überall verfügbar , aber wie 
Ada sagt , haben sie eine ziemlich gute Unterstützung, und 
es gibt Polydateien , die sie noch besser unterstützen, sodass Sie sie heute verwenden können!
Ada und 
Ruth John haben kürzlich eine Webanwendung zur Visualisierung von Musik mithilfe von Webkomponenten entwickelt und 
ihre Lektionen geteilt .
Darüber hinaus können Sie sich mit neuen Funktionen wie Webkomponenten sicherer fühlen, wenn Sie serverseitiges Rendering (SSR) verwenden und Ihre Clientseite mit 
Progressive Enhancement implementieren.
Meine persönliche Präferenz ist es, ein großartiges SSR-Erlebnis aufzubauen und es dann zu einer Single Page App zu erweitern.
- Ada Rose Cannon
Isomorphe ES-Module
Sie können jetzt auch 
ES-Module verwenden ! Auch hier ist die Browserunterstützung ziemlich gut, und Sie können ältere Browser mithilfe des 
Fallbacks "nomodule" unterstützen .
Wenn Sie mit dem SSR + Progressive Enhancement-Ansatz einverstanden sind, können Sie sogar ES-Module verwenden, ohne Build-Tools verwenden zu müssen, um sie in andere Browser zu übertragen, da ältere Browser weiterhin ohne JavaScript arbeiten können. Mit dem 
ESM- Modullader können wir 
ES-Module auch direkt in NodeJS verwenden .
Dies ist großartig, da wir unsere Skripte im Frontend und Backend (dh "Isomorphic Rendering") wiederverwenden können, ohne mit einem Tamburin zu tanzen. Wir können unseren Frontend-Code strukturieren, ohne unsere Skripte zusammenkleben, viele Skript-Tags auf einer Seite platzieren oder clientseitige Loader verwenden zu müssen.
Genau das hat Ada in ihrem 
ersten Twitch-Vortrag in diesem Monat demonstriert. Es gibt auch einen 
Blogeintrag mit Erklärungen.
Ich hoffe, dass ich meine Gedanken teilen konnte, als wir in eine neue Ära der Webentwicklung eintreten. Eine Ära, die weniger von traditionellen UI-Frameworks, CSS-Bibliotheken und Bundlern abhängig ist. Eine Ära, in der wir weniger Bytes senden und unsere Webanwendungen schneller laden. Die Ära gefährdeter Rahmenbedingungen.
Vielen Dank an Nolan Lawson, Rich Harris und Ada Rose Cannon für ihre Hilfe und Inspiration für diesen Artikel. Dieser Artikel ist auch hier in meinem persönlichen Blog veröffentlicht.***.
Von mir selbst möchte ich bemerken, dass im Moment leider nur ich auf Habré über 
Svelte schreibe. Daher gibt es auf Russisch einige Informationen über diesen wunderbaren Rahmen.
Wenn Sie ihn zum ersten Mal getroffen haben, könnten Sie interessiert sein, andere Artikel zu diesem Thema zu lesen:
Wer seine Entwicklung aktiv überwachen möchte - willkommen beim russischsprachigen Telegrammkanal 
SvelteJS . Wir freuen uns, Sie zu sehen!
Herzlichen Glückwunsch an alle zum Sommer und den Siegen unseres Teams! Ein schönes Wochenende! Hurra!