我构建了全球数百万人在使用的网站。我犯的错误比我想承认的还要多,而且多年来不得不应对这些错误带来的后果。在所有这些过程中,我和我的团队一直在努力在用户体验和开发者体验之间取得最佳平衡。我们构建了自定义解决方案并使用了库/工具,所有这些都是为了解决用户体验问题并提高我们自身的生产力。这确实是一场艰苦的斗争。
然后 Remix 出现了,它极大地减少了我的斗争。我用 Remix 重建了我的网站,并且印象深刻。老实说,我觉得我可以创造出令人惊叹的用户体验,并且不会为实现它所需的代码感到羞愧。我 非常喜欢 Remix,以至于我最终加入了团队(所以:免责声明)。如果您之前从未听说过 Remix,它是一个用于构建出色用户体验的 Web 框架,它“重混”了自 90 年代以来一直使用的 Web,并结合了我们今天拥有的强大技术。以下是我最喜欢的一些功能
- 无缝的客户端-服务器代码:我的意思是,客户端和服务器上运行的内容之间肯定存在分离,并且很清晰,但是可以在同一文件中轻松地在两者之间切换,我觉得我可以对更多的产品功能想法说“是”。
- 渐进增强:Remix 允许我比我使用过的任何其他东西都更好地 #useThePlatform。它们对 Web API 的使用意味着我越擅长 Remix,我就越擅长 Web。而且,因为我用 Remix 构建的应用程序无需 JavaScript 即可运行,所以我获得了真正的渐进增强,适用于网络条件较差的情况,在这些情况下 JavaScript 加载时间很长或完全无法加载。
- CSS — 恢复级联:因为 Remix 允许我轻松控制在任何给定时间页面上有哪些 CSS 文件,所以我没有引发 JavaScript 社区发明 CSS-in-JS 等解决方法的所有问题。
- 嵌套路由:这允许 Remix 在用户浏览页面时优化它发出的数据请求(这意味着对于支付有限互联网费用的用户来说,速度更快且成本更低)。它还允许我在发生故障的应用程序部分的上下文中处理错误,而不会在此过程中导致整个页面崩溃。
- 简单的变异:Remix 没有使用复杂的 JavaScript 库来管理变异,而是只使用了平台
<form />
。并且 Remix 管理您的客户端缓存,因此您无需担心完全无效化缓存。实际上,使用 Remix 您根本不需要考虑这一点。它为您管理,您只需获得一个不错的声明式 API。 - 标准化的平台:我们有很多选择可以部署我们的应用程序。Remix 将这些标准化(有点像平台的 jQuery)。因此,无论您是想部署到无服务器、Cloudflare Workers 还是常规节点应用程序,都没有关系。只需编写相同的代码并部署到您喜欢的地方即可。
Remix 有很多值得喜欢的地方,但我会在这里总结一下。
我意识到并非每个人都可以将他们的网站迁移到 Remix,这没关系。Remix 的口号是:构建更好的网站(有时使用 Remix)。我认为我想鼓励您做的一件事来改善您的网站是了解 Remix 并从中学习,并将其中的一些想法应用到您的网站中。如果您可以迁移到 Remix,那就更好了。😆
请记住,我们都只是试图让世界变得更美好一点,我希望通过撰写本文,我能够为您提供一些关于如何让您自己的世界变得更美好的想法。祝你好运!
对 Remix 感兴趣,但直到/除非更广泛的社区有机会对其进行审查,否则我没有时间深入研究。
我希望看到一个框架,它提供一些基础知识,但尽可能少地做出假设。Next.js 有一些很棒的东西,但在某些方面(如路由和部署)过于武断。Remix 似乎想要解决这个问题,但它仍然感觉像是试图鼓励某种工作流程。希望最终能看到一位与 Remix 无关的人(对 Keven 没有冒犯的意思,他的意见很有价值,但当你参与项目时,任何人都无法避免有偏见!)进行深入的审查。
曾经有一个名为 React Universally 的 React 服务器渲染样板。不要使用它(或任何样板),因为一旦它们不可避免地停止维护,它们就一定会变成维护噩梦。但 RU 正确地做了需要做的事情(构建过程、服务器渲染、开发人员标准路由(tm)),其他任何事情都是附加组件或可由您配置的。希望看到一个具有这种灵活性的框架,也许带有一个静态渲染选项,但基于 npm 并且得到良好的维护。
我希望将来看到 Remix 具有内置的预处理器支持(例如 SCSS)。