6 多年前,我用 Next.js 创建了一个开源 URL 缩短器,经过多年的开发,我发现 Next.js 更多的是负担而非帮助。随着时间的推移,Next.js 发生了变化,我的代码也随之调整以兼容这些变化。
我的 Next.js 代码库变得越来越大,其复杂性也随之增加。我有数十个组件和一长串依赖项需要管理。我最终不得不不断维护代码,只是为了让它保持运行。当然,Next.js 在某些方面提供了帮助,但代价是什么?
我问自己,我在网站上做的那些事情到底有多复杂,需要所有那些 JavaScript 代码来决定网页上渲染什么以及如何渲染?Next.js 试图从服务器端渲染网页,那么为什么我不直接发送 HTML 呢?
于是我决定尝试一条新路径——有些人可能会说这是老路——选择纯 HTML,并借助 htmx 来实现。
在这里观看我详细讲解:
用 htmx 驱动的等效 HTML 元素替换我的组件并不是一件容易的事,但值得花费时间。我不得不从不同的角度看待事物,有时我觉得在实现用户交互时受到了限制,但最终创建的东西可靠且快速。
所有的构建步骤都消失了;不再需要转译和编译代码。你所见即所得。大多数依赖项变得多余并已被移除。网站的主要逻辑移到了服务器端,维护单一真相来源。
在 Next.js 版本中,我有孤立的组件、全局状态,以及所有那些用于处理表单或更新内容的 JavaScript,然而,使用 htmx 后,一切变得更直观。尝试之后,发送和接收 HTML 突然变得有意义。
这些数字标志着巨大的改进,然而,对我来说,最终重要的是用户和开发者体验,在这两方面 htmx 都赢了。