最近,一位客户联系我,询问其 WordPress 网站上的“财务评估”javascript 应用程序不再工作。它有很多问题,最后,最简单的方法就是重建它。
在此应用程序中,用户可以输入基本的财务和个人信息,应用程序会告诉他们在财务规划方面是否走在正确的道路上。这不是超级复杂的逻辑,但有相当多的逻辑。
我主要不是前端开发人员。我在后端最舒服。但我已经在 Vue、Angular、React 中实现了项目...它们工作,但我并不完全信任它们。随着时间的流逝,我总是对依赖项(包括开发工具链本身)已经过时产生了一种隐隐的焦虑。
Gleam 是一种用于构建可扩展的类型安全系统的友好语言!
~ Gleam 的网站
自从 Gleam 首次宣布 v1 已准备好投入生产以来,我一直对他们感到兴奋。它的函数式风格、不变性、详尽的模式匹配、类型推断以及 Go 的简单稳定性意味着 Gleam 满足了我所有的喜好。
类型系统几乎可以保证,如果您的代码可以编译,它可以工作。我还没有在我的 Gleam 代码中遇到过一个不是“我的错,我忘了完成实现”的错误。
Gleam 是为了在 BEAM(Erlang 传奇的久经考验的 VM)上运行而构建的,但它也有一个 Javascript 编译目标。这意味着它可以轻松传送到 Node 和浏览器。
Lustre 是 Gleam 卓越的前端框架。它是 Elm 到 Gleam 生态系统的忠实移植,并具有 Elm 的“模型 -> 视图 -> 更新”状态管理架构。
这是一个比其他前端框架更加简单的概念模型。 Lustre 的状态管理模型并不是将状态管理作为一个可选库提供(我正在看你的 redux),而是它的核心。
您只需描述可以用来修改应用程序内的状态的每个动词,并将该动词映射到返回模型更新版本的类型安全纯操作。视图函数(也是纯函数)直接从该单一模型的状态流动。
Lustre 还提供了一个托管效果系统,这样即使各种 I/O 操作可能会失败,您的应用程序代码也可以使用完全纯函数来实现。
纯函数最酷的地方是什么?在给定相同的输入的情况下,它们保证始终提供相同的输出。这使得它们可预测、易于测试并且极其稳定。纯函数不会破坏。他们在数学上有点不能。
Lustre 应用程序可能涉及位更多样板设置应用程序并创建所有类型等。但 ...
从来没有一个更合适的框架来应用术语“样板”。它给我带来的自信就像将铆钉钉入钢板中一样。一旦就位,那东西就不会任何地方。
我很难表达与我之前使用 javascript 的经历相比,这种感觉有多么不同。如果我在另一个框架中完成,我的应用程序的 LOC 可能会更少。但我相信它不会破裂吗?是不是就这么简单易懂了呢?
我按时并在预算范围内交付了我的应用程序。客户对此非常满意。我睡得很安稳,因为我知道这个项目确实完成了。
不仅如此,它还可以在所有地方的Wordpress中舒适地生活。我制作了一个短代码来加载已编译的资源,将其弹出到页面上,就是这样。
JS 包经过压缩和 gzip 压缩后大小为 18.1 kb。这几乎和 htmx 一样小。大声哭出来!
对于使用仍然相对晦涩的语言和框架来交付项目,我确实有一些保留。但知道应用程序不会崩溃,而且 Gleam 本身可以在一个下午学会,这些保留意见就得到了缓解。
最重要的是——老实说,如果我使用其他任何东西来构建它,我真的不认为我会对最终产品、工具链的稳定性或未来升级它的能力充满信心.
我现在开始写这篇文章的全部动机:在生产环境中使用 Lustre 应用程序的感觉
这个应用程序发布已经有几周了,我仍然喜欢时不时地重新访问它。不是因为客户要求改变。只是看代码。
这么说我几乎感到尴尬,但我的大多数其他代码在某种程度上感觉像是一种责任。 特别是 javascript。即使它是 Typescript,即使它有测试。这让我感到焦虑,就像布满了隐藏的地雷和诱杀装置。
也许是技能问题。也许我只是被烧伤太多次了。
看着我的 Gleam/Lustre 代码让我感到平静。
就是这样。这就是那条推文。
最后,我真诚地希望其他开发者能够尝试一下 Gleam 和 Lustre,这样他们在思考他们的前端代码时也能享受到同样的禅宗般的幸福。
感谢您的阅读。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3