「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 光沢と輝きで心拍数が下がります - ケーススタディ

光沢と輝きで心拍数が下がります - ケーススタディ

2024 年 11 月 8 日に公開
ブラウズ:858

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

最近、クライアントから、Wordpress サイト上の「財務評価」JavaScript アプリが動作しなくなったと相談を受けました。問題が山ほどありましたが、最終的には再構築するのが最も簡単な方法でした。

このアプリでは、ユーザーは基本的な財務情報と個人情報を入力でき、アプリは財務計画の観点から正しい道を進んでいるかどうかを教えてくれます。それほど複雑なロジックではありませんが、かなりの量があります。

私は基本的にフロントエンド開発者ではありません。バックエンドが一番快適です。しかし、私は Vue、Angular、React でプロジェクトを実装しました...それらは機能しますが、完全に信頼しているわけではありません。そして、月日が経つにつれて、開発ツールチェーン自体も含めて、依存関係がどれほど古くなっているに違いないのかという不安が常に忍び寄ってきます。

輝きを入力してください

Gleam は、拡張可能なタイプセーフ システムを構築するためのフレンドリーな言語です!
~ Gleam のウェブサイト

Gleam が最初に v1 の運用準備が整ったと宣言して以来、私は Gleam に興奮していました。その機能的なスタイル、不変性、徹底的なパターン マッチング、型推論、Go のシンプルな安定性により、Gleam は私のスイート スポットをすべて満たしていました。

型システムは、コードがコンパイルされると、それが機能することをほぼ保証します。私の Gleam コードでは、「ひどい、実装を完了するのを忘れていた」というバージョンではないバグにまだ遭遇したことがありません。

光沢を入力してください

Gleam は BEAM (Erlang の伝説的な実戦テスト済み VM) 上で実行するように構築されていますが、JavaScript コンパイル ターゲットもあります。つまり、Node とブラウザに簡単に送信できるということです。

Lustre は、Gleam の優れたフロントエンド フレームワークです。これは Elm を Gleam エコシステムに忠実に移植したもので、Elm の「モデル -> 表示 -> 更新」状態管理アーキテクチャを特徴としています。

これは、他のフロントエンド フレームワークよりも大幅に単純な概念モデルです。状態管理をオプトイン ライブラリとして提供するのではなく (redux を見ています)、Lustre の状態管理モデルはその鼓動の中核です。

アプリ内の状態を変更するために実行できるすべての 動詞 を単純に記述し、その動詞をモデルの更新バージョンを返すタイプセーフな純粋な操作にマップします。ビュー関数 (これも純粋) は、そのユニタリ モデルの状態から直接流れます。

Lustre はマネージド エフェクト システムも提供するため、失敗する可能性のあるさまざまな I/O 操作があっても、完全に純粋な関数を使用して アプリ コードを実装できます。

純粋関数のすごいところは?同じ入力が与えられた場合、常に同じ出力を提供することが保証されます。これにより、予測可能でテストが容易になり、非常に安定したものになります。純粋な関数は壊れません。数学的には

できません

甘い、甘い定型文

Lustre アプリには、アプリのセットアップやすべてのタイプの作成など、

少しの定型文が含まれる場合があります。しかし ...

「定型文」という用語がこれほど適切に適用されたフレームワークはありません。鋼板にリベットを打ち込んだときと同じような自信が得られます。一度設置されると、それは

どこにも行きません

これまでの JavaScript の経験と比べて、これがどのように違うのかを表現するのに苦労しています。別のフレームワークで作成していたら、私のアプリの LOC はもっと少なかったかもしれません。しかし、壊れないと信じていいでしょうか?簡単に理解できますか?

最終製品

アプリを予定通りに予算内で出荷しました。クライアントは本当に満足しています。そして、このプロジェクトが本当に

完了したと知って、安心して眠れます。

それだけでなく、あらゆる場所の

Wordpress で快適に動作します。コンパイルされたアセットをロードするショートコードを作成し、それをページにポップするだけで完了です。

JS バンドルは 18.1 kb で、縮小され、gzip 圧縮されています。これは

htmx とほぼ同じくらい小さいです。大声で泣いたから!

まだ比較的知られていない言語とフレームワークを使用してプロジェクトを出荷することについては、いくつかの懸念があります。しかし、アプリが壊れることはなく、Gleam 自体は午後もあれば習得できることを知れば、そうした不安も和らぎます。

最も重要なこと - 正直に言うと、他のものを使用してツールチェーンを構築していたら、最終製品、ツールチェーンの安定性、または将来アップグレードする能力にこれほど自信が持てなかったと思います.

私の心拍数

私は今、この記事を書く動機のすべてを考えています。それは、Lustre アプリを実稼働環境に置いているという感覚です。

このアプリがリリースされてから数週間が経ちましたが、今でも時々再訪したいと思っています。クライアントが変更を要求したからではありません。コードを見るだけです。

こんなことを言うのはほとんど恥ずかしいのですが、私の他のコードのほとんどは、あるレベルで責任を感じています。

特に JavaScript。たとえそれが Typescript であっても、テストがあったとしても。隠れた地雷やブービートラップが散りばめられているような気がして、不安になります。

スキルの問題かもしれません。もしかしたら、私は何度も火傷を負いすぎたのかもしれません。

Gleam/Lustre コードを見ると、穏やかな気分になります

それでおしまい。それがそのツイートです。

最後に、他の開発者にも Gleam と Lustre を試してもらい、フロントエンド コードを検討するときに同じ禅のような至福を楽しんでもらいたいと心から願います。

読んでいただきありがとうございます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/enoonan/lustre-and-gleam-make-my-heart-rate-go-down-a-case-study-5765?1 侵害がある場合は、 Study_golang@163 .comdelete に連絡してください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3