„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Glanz und Glanz lassen meinen Puls sinken – eine Fallstudie

Glanz und Glanz lassen meinen Puls sinken – eine Fallstudie

Veröffentlicht am 08.11.2024
Durchsuche:286

Lustre and Gleam Make my Heart Rate Go Down - a Case Study

Ich wurde kürzlich von einem Kunden wegen einer „Finanzbewertung“-Javascript-App auf seiner Wordpress-Website angesprochen, die nicht mehr funktionierte. Es gab eine Menge Probleme und am Ende war der einfachste Weg, es wieder aufzubauen.

In dieser App können Benutzer grundlegende finanzielle und persönliche Informationen eingeben und die App sagt ihnen, ob sie in Bezug auf die Finanzplanung auf dem richtigen Weg sind. Es ist keine superkomplexe Logik, aber es gibt einiges davon.

Ich bin nicht in erster Linie ein Frontend-Entwickler. Im Backend fühle ich mich am wohlsten. Aber ich habe Projekte in Vue, Angular, React umgesetzt... Sie funktionieren, aber ich vertraue ihnen nicht ganz. Und im Laufe der Monate und Jahre entwickelt sich in mir immer eine schleichende Sorge darüber, wie veraltet die Abhängigkeiten, einschließlich der Entwicklungs-Toolchain selbst, geworden sein müssen.

Betreten Sie Gleam

Gleam ist eine benutzerfreundliche Sprache zum Erstellen typsicherer Systeme, die skalierbar sind!
~ Gleams Website

Ich bin von Gleam begeistert, seit sie zum ersten Mal erklärt haben, dass Version 1 für die Produktion bereit ist. Sein funktionaler Stil, seine Unveränderlichkeit, der umfassende Mustervergleich, die Typinferenz und die Einfachheit, Stabilität von Go bedeuteten, dass Gleam alle meine Stärken traf.

Das Typsystem garantiert so ziemlich, dass Ihr Code beim Kompilieren funktioniert. Ich habe noch keinen Fehler in meinem Gleam-Code festgestellt, der nicht irgendeine Version von „Mein Fehler, ich habe vergessen, die Implementierung abzuschließen“ war.

Betreten Sie Lustre

Gleam wurde für die Ausführung auf BEAM (Erlangs legendärer, kampferprobter VM) entwickelt, verfügt aber auch über ein Javascript-Kompilierungsziel. Das bedeutet, dass es problemlos an Node und den Browser gesendet werden kann.

Lustre ist Gleams herausragendes Frontend-Framework. Es handelt sich um eine originalgetreue Portierung von Elm auf das Gleam-Ökosystem und verfügt über die Zustandsverwaltungsarchitektur „Modell -> Ansicht -> Update“ von Elm.

Dies ist ein wesentlich einfacheres konzeptionelles Modell als andere Frontend-Frameworks. Anstatt die Zustandsverwaltung als Opt-in-Bibliothek anzubieten (ich sehe Sie als Redux), ist das Zustandsverwaltungsmodell von Lustre der Herzstückkern.

Sie beschreiben einfach jedes Verb, das zum Ändern des Status innerhalb Ihrer App ausgeführt werden kann, und ordnen dieses Verb einer typsicheren reinen Operation zu, die eine aktualisierte Version des Modells zurückgibt. Die Ansichtsfunktionen (auch rein) fließen direkt aus dem Zustand dieses einheitlichen Modells.

Lustre bietet außerdem ein verwaltetes Effektsystem, sodass Ihr App-Code auch bei verschiedenen E/A-Vorgängen, die möglicherweise fehlschlagen, mit vollständig reinen Funktionen implementiert werden kann.

Das Coole an reinen Funktionen? Es ist garantiert, dass sie bei gleichem Input immer den gleichen Output liefern. Dadurch sind sie vorhersehbar, leicht zu testen und äußerst stabil. Reine Funktionen gehen nicht kaputt. Sie können mathematisch gesehen

nicht.

Süßes, süßes Boilerplate

Lustre-Apps können einen

etwas mehr Aufwand erfordern, um die App einzurichten und alle Typen usw. zu erstellen. Aber ...

Nie gab es einen passenderen Rahmen, auf den der Begriff „Boilerplate“ angewendet wurde. Es gibt mir das gleiche Selbstvertrauen, das ich bekommen würde, wenn ich eine Niete in ein Stahlblech treibe. Sobald das Ding einmal an Ort und Stelle ist, geht es nirgendwohin

. Es fällt mir schwer auszudrücken, wie unterschiedlich sich das im Vergleich zu meinen früheren Erfahrungen mit Javascript anfühlt. Meine App hätte möglicherweise weniger LOC gehabt, wenn ich sie in einem anderen Framework erstellt hätte. Aber würde ich darauf vertrauen, dass es nicht kaputt geht? Wäre es so einfach zu verstehen?

Das Endprodukt

Ich habe meine App pünktlich und unter Budget geliefert. Der Kunde ist wirklich zufrieden damit. Und ich schlafe beruhigt, weil ich weiß, dass dieses Projekt wirklich

getan

ist. Nicht nur das, es lebt auch bequem ausgerechnet in

Wordpress

. Ich habe einen Shortcode zum Laden der kompilierten Assets erstellt, ihn auf der Seite platziert und das war's. Das JS-Bundle ist 18,1 KB groß, minimiert und gzip-komprimiert. Das ist fast so klein wie

htmx

. Fürs laute Schreien! Ich habe einige Vorbehalte gegenüber der Auslieferung eines Projekts mit einer noch relativ unbekannten Sprache und einem relativ unbekannten Framework. Aber diese Vorbehalte werden zerstreut, wenn man weiß, dass die App nicht kaputt geht und dass Gleam selbst an einem Nachmittag erlernt werden kann.

Das Wichtigste: Ich glaube ehrlich gesagt nicht, dass ich so zuversichtlich in das Endprodukt, in die Stabilität der Toolchain oder in meine Fähigkeit wäre, es in Zukunft zu aktualisieren, wenn ich es mit etwas anderem erstellt hätte .

Meine Herzfrequenz

Jetzt komme ich zu meiner gesamten Motivation, diesen Beitrag zu schreiben: dem Gefühl, eine Lustre-App in Produktion zu haben

Es ist ein paar Wochen her, seit diese App veröffentlicht wurde, und ich schaue mir sie immer noch gerne von Zeit zu Zeit an. Nicht, weil der Kunde Änderungen verlangt hat. Schauen Sie sich nur den Code an.

Es ist mir fast peinlich, das zu sagen, aber der Großteil meines anderen Codes fühlt sich in gewisser Weise wie eine Belastung an.

Besonders

Javascript. Auch wenn es Typescript ist, auch wenn es Tests enthält. Es macht mir Angst, als ob es mit versteckten Landminen und Sprengfallen übersät wäre. Vielleicht ist es ein Problem mit den Fähigkeiten. Vielleicht habe ich mich einfach zu oft verbrannt.

Wenn ich mir meinen Gleam/Lustre-Code ansehe, fühle ich mich

ruhig. Das ist es. Das ist der Tweet.

Abschließend wünsche ich mir aufrichtig, dass andere Entwickler Gleam und Lustre ausprobieren, damit auch sie bei der Betrachtung ihres Frontend-Codes die gleiche Zen-Glückseligkeit genießen können.

Vielen Dank fürs Lesen.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/enoonan/lustre-and-gleam-make-my-heart-rate-go-down-a-case-study-5765?1 Wenn es einen Verstoß gibt, bitte Kontaktieren Sie Study_golang@163 .comdelete
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3